I've just broken the socket code.

But the plan is:
* Use just one io watcher.
* Post errors instead of using an idle watcher, because an idle watcher may delay the error message for a long time.