optimization to self._next_timeout calculation