ENG-5245

ENG-5245

- Tests for sending rouge messages
- Fixes and guards to crashing server
- Protocol is not changed.
I don't think cancelling the timeout futures actually does anything. The scheduled tasks just close the socket, and if the socket is already closed due to error response it doesn't matter. Canceling doesn't eliminate the race either. There is isn't even any extra logging because the logging is performed by the thread that generates the error response so the timeout log message goes into the ether.

I noticed because I am backporting this to 3.7.x manually