HTTP proxy support

Writing tests for this would involve restructuring the `post()` method
to use transport adapters which can be mocked or inspected, 
since you can't catch calls to `exec()` or `stream_*()`.