joyent/node — comment on commit 60aea96f84c850615bac7a6e00ef28fab5ae18ae
File: lib/http.js line 611
By koichik:

Yes, they are still necessary to support HTTP pipelining (server side) and connection pool (`Agent`, client side).
`_buffer()` keeps data until a socket is assigned. When a socket is assigned, `_flush()` writes the buffered data to the socket.

The following comment explains the client side. If `Agent.maxSockets` is `1`, the socket is not yet assigned to `req2`. So, `'hello world\n'` is kept by `_buffer()`.