Part of twisted.internet.cfreactor View Source View In Hierarchy
PosixReactorBase.runUntilCurrent to get invoked.
CFReactor
has a slightly different model of iteration, though: rather than have each 
iteration process the thread queue, then timed calls, then file 
descriptors, each callback is run as it is dispatched by the CFRunLoop 
observer which triggered it.
So this waker needs to not only unblock the loop, but also make sure the
work gets done; so, it reschedules the invocation of 
runUntilCurrent to be immediate (0 seconds from now) even if 
there is no timed call work to do.
| Method | doRead | Wake up the loop and force runUntilCurrent to run 
immediately in the next timed iteration. | 
  
runUntilCurrent to run 
immediately in the next timed iteration.