Where does self._client come from, and what's the difference between self._client and self._client.client? Is this implicitly set in the super() constructor?

I don't believe that inheritance is actually a good way to wrap things; it's not really a wrapper when the thing you wrapped is still sticking out. I'd prefer encapsulation, if it's at all reasonable to refactor it that way.

Encapsulation would, unfortunately, make this attribute access even uglier, as it would be something like `self.session._client.client.resource_owner_secret`. ...Is editing the attributes of session._client.client actually the thing we're supposed to be doing, or is there some API?