On my personal fork I'm working on intercepting calls here and checking for the presence of an expiry and refresh token. I think the primary issue is this likely requires some kind of datastore, e.g. sqlite, so that the refresh token and expiry and kept around between calls and are visible at the session layer; i.e. when `get_raw_access_token` is called rauth could save the response in a datastore and key it by the current access token then later retrieve it from the datastore in the scope of `Session.request`. This is necessary if the service wrapper is constructed from scratch each time calls are made. The alternative might be to ask the client to provide the result of `get_raw_access_token` as an optional parameter on calls. It's awkward either way I think and ideally would happen automatically and transparently.