public function scheduleTimeout(TimerInterface $timer, $newTimer)
    {

        // check if this timer has been cancelled by another thread
        if ($newTimer === false && $this->getTimers()->has($timer->getId()) === false) {
            return; // if yes, we just return
        }

        // if next expiration is NULL, no more tasks will be scheduled for this timer
        if ($timer->getNextExpiration() == null) {
            return; // we just return
        }

        // create the timer task and schedule it
        $this->getTimerServiceExecutor()->schedule($timer);
    }