code: func (t *UAAAuthentication) Make(request *router.Request, passedResponse *router.Response) error {
  	if t.client == nil {
  		return t.connection.Make(request, passedResponse)
  	}
  
  	request.Header.Set("Authorization", t.cache.AccessToken())
  
  	requestErr := t.connection.Make(request, passedResponse)
  	if _, ok := requestErr.(routererror.InvalidAuthTokenError); ok {
  		tokens, err := t.client.RefreshAccessToken(t.cache.RefreshToken())
  		if err != nil {
  			return err
  		}
  
  		t.cache.SetAccessToken(tokens.AuthorizationToken())
  		t.cache.SetRefreshToken(tokens.RefreshToken)
  
  		if request.Body != nil {
  			err = request.ResetBody()
  			if err != nil {
  				return err
  			}
  		}
  		request.Header.Set("Authorization", t.cache.AccessToken())
  		requestErr = t.connection.Make(request, passedResponse)
  	}
  
  	return requestErr
  }
docs: // Make adds authentication headers to the passed in request and then calls the
  // wrapped connection's Make. If the client is not set on the wrapper, it will
  // not add any header or handle any authentication errors.