code: def _do_token_refresh(self, request):
          # type: (Mapping[str, str]) -> oic.oic.message.AccessTokenResponse
          
          token_request = RefreshAccessTokenRequest().from_dict(request)
          try:
              token_request.verify()
          except MessageException as e:
              raise InvalidTokenRequest(str(e), token_request) from e
  
          response = AccessTokenResponse()
  
          access_token, refresh_token = self.authz_state.use_refresh_token(token_request['refresh_token'],
                                                                           scope=token_request.get('scope'))
          self._add_access_token_to_response(response, access_token)
          if refresh_token:
              response['refresh_token'] = refresh_token
  
          return response
docs: Handles a token request for refreshing an access token (grant_type=refresh_token).
          :param request: parsed http request parameters
          :return: a token response containing a new Access Token and possibly a new Refresh Token
          :raise InvalidTokenRequest: if the token request is invalid