Fix a race condition in the TCP handler.

Under load, a dropped TCP connection could cause synchronous operations
on a client to block forever, because the channel closed event was never
propagated up to the netty TCP handler, which is responsible for
dropping in-flight write promises.