This is in response to [your comment](https://github.com/shazow/urllib3/issues/303#issuecomment-31594913), where you wrote that “urllib3 tries to be configurable per-request”. So if you want to be able to do configuration (field header style and request encoding at the moment, but there might be more to come later on), then passing that along seems the most reasonable thing to do. I've written all of the `filepost` code in such a way that it works without a request object, so you can use those functions and even plug in your own objects instead of a real request. That's what [the `test_control_*` unit tests](#diff-026bead77b2bc8822db56115ca68078fR141) do. I also made sure to write no defaults into the request classes, but instead use `getattr` to provide defaults inside `filepost` instead. Therefore an empty object might be used in place of a request, without violating any ducktype requirements.