That should be read as 'readable or writable but not both', right?  But below you call uv_poll_start() with UV_READABLE | UV_WRITABLE.  How does that work?