@substack raised some good points in recent rants.
The current behavior isn't what anyone wants. Request has traditionally tried to offer a simpler API to the pooling in core and also straddle compatibility between versions of pooling in core.
These issues won't be fixed in core until 0.12, it may be prudent to move request, tunnel-agent and forever-agent (or possibly deprecate entirely) to the new pooling structure being discussed for 0.12.
As discussed here, joyent/node#4769, something like require('net').createPool() will go in to 0.12. Could we begin this as a standalone library that will work in 0.8+ and integrate it in to request prior to 0.12?
It is my plan to write a standalone net pooling implementation as a separate userland module similar to the readable-stream module, which copies the code from core, and provides a place for experiment as well as a forward-compat shim for node v0.10 and before.
So, yes, I'm going to do this, if someone else wants to do it instead of me, then so much the better :)
As you build this we can integrate with request and you can get some wider usage and testing.
Yep. That's the plan :)