If quit is called on the client, it is not removed from the eventloop as it should when it disconnects. This means run() does not return even if there are no clients left.
EDIT: Technically I'm calling diggler's CommandContext quit(), though I assume it just forwards the call.
EDIT2: In fact, removing the client manually from the event loop does not remove it from the event loop either, so I'm guessing remove is just broken.