This means
* less fluctuation in number of responses send per second
* longer poll timeouts can be used since poll is woken when
responses are available for sending
* drain-like method used to fetch responses from response
channel, meaning responses added while iterating won't
be processed
It doesn't make a lot of sense to make a separate crate for
the few things here. I don't really want tight coupling between
the crates anyway, since it impedes making changes in them
and makes understanding them more difficult.