public function getNextTimeout()
    {

        // throw an exception if timer has been canceled
        if ($this->isCanceled()) {
            throw new NoSuchObjectLocalException('Timer has been cancelled');
        }

        // return the timeout of the next expiration
        $nextExpiration = $this->getNextExpiration();

        // check if we've a next expiration timeout
        if ($nextExpiration == null) {
            throw new NoMoreTimeoutsException(sprintf('Timer %s has no more future timeouts', $this->getId()));
        }

        // return the next expiration date
        return $nextExpiration;
    }