This is a little bit of distortion of the API for testing purposes - with normal servers, it'll read all of the MQTT and happily loop forever in the background until one of them drops the socket.

We don't have the luxury of waiting forever, so Timeout is nuking the loop after a set period. Turns out the underlying library makes it tricky to simply ask ```is_there_anything_else_ready?```