One more thing to add - responses from server (i.e. data from netcat were already written to and read from the stream) with flush set to true go through immediately.
So the problem is only with client initiating the request/response round.