`post_send` looks good to me now.  What I was going to say about `pre_send` (sorry that wasn't clear enough) - the only place it's called is our `request` method - and we call it as `self.pre_send(request_params)`.  So there is no chance it will get any `**kwargs`.  So probably we should just remove them?  - `def pre_send(self, request_params)`.  And `request_params` in this case might contain anything else besides actual request params.

(Originally I thought that we should end up with `def pre_send(self, **kwargs)` and call it as `self.pre_send(**request_params)`, but now I think the `self.pre_send(request_params)` is much better.