joyent/node — comment on commit 0e8a55d2a22b88dc3b9b0165f344602b0fa8c977
File:  line 0
By igorzi:

The ECONNABORTED happens on the server in the example above. It happens because the server's write never got read by the client. The client connects to the server, writes, and closes the socket. The server tries to write to the socket, but that write doesn't actually succeed (it just gets buffered to winsock) because the connection already got closed on the client side. After several failed retransmitions winsock aborts the connection on the server, which results in WSAECONNABORTED from WSARecv. If the above example is rewritten to have the client read server's response before closing the socket - ECONNABORTED goes away.

One way to fix this would be to just convert WSAECONNABORTED to EOF in libuv. WSAECONNABORTED essentially means EOF while also indicating that a write didn't succeed because the connection got closed on the other end. @piscisaureus what do you think?