'Call timed events until there are no more or the reactor is stopped.
@raise RuntimeError: When no timed events are left and the reactor is
still running.'

def run(self):

    self._running = True
    whenRunning = self._whenRunning
    self._whenRunning = None
    for (callable, args, kwargs) in whenRunning:
        callable(*args, **kwargs)
    while self._running:
        calls = self.getDelayedCalls()
        if (not calls):
            raise RuntimeError('No    DelayedCalls    left')
        self._clock.advance((calls[0].getTime() - self.seconds()))
    shutdownTriggers = self._shutdownTriggers
    self._shutdownTriggers = None
    for (trigger, args) in (shutdownTriggers['before'] + shutdownTriggers['during']):
        trigger(*args)
