Only raise ClientConnectionError in one place

If we raise it on the write and read callbacks, the libev event hub will
trigger the exception twice. There might be a better way to do this,
like canceling the callback in the libev hub implementation. However, it
looks like this is attempted but the exception still fires.