recover should not occur if entire buffer has been written successfully

If the underline socket has successfully written the entire buffer, it usually means that the server got everything.
Any (?) exception after that means an internal server error:
Timeout - server took too long to process my request, but it still got it!
Broken Pipe - server instance/process/thread crashed, but it still got the request.

This patch will prevent duplicate calls.