I'll just post my thoughts here while they're fresh. It looks good. The documentation is what I'd expect from a Phobos module, as is the naming convention.
auto _basicFtp(T)(const(char)[] url, const(void)[] sendData, Ftp client) If you don't want people using it, shouldn't it be marked private instead of using the underscore for obscurity? private struct Pool(DATA) { private: You've marked private things as 'private foo;' everywhere else in the module, what's with the switch in styles for this struct? Also, as the whole struct is module private I'm not sure of the utility of marking members private. I guess it's a form of documentation. But really, I'm grasping at straws. Even if the above were to remain, I would love to see this in Phobos yesterday. :) -Bernard.