Hub: fix possible deadlock
Hub: fix possible deadlock

If there are callbacks, the hub should process IO, but not wait for new
IO.

A scenario where this is relevant is e.g. Event. It may end up calling
hub.switch() *after* the switch_back() switcher has been called. In this
case we want to process the new callback without first having to wait
for IO.

swegener/gruvi,swegener/gruvi,geertj/gruvi,geertj/gruvi