- Always closes the socket.
- Throws on any error or timeout.
- Doesn’t hang if the server sends nothing.
