code: func (a *OAuthStrategy) Do(req *http.Request) (*http.Response, error) {
  	if err := a.Login(); err != nil {
  		return nil, err
  	}
  
  	req.Header.Set("Authorization", "Bearer "+a.AccessToken())
  
  	clone, err := cloneRequest(req)
  
  	if err != nil {
  		return nil, errors.New("failed to clone request body: " + err.Error())
  	}
  
  	req.Header.Set("Authorization", "Bearer "+a.AccessToken())
  	resp, err := a.ApiClient.Do(req)
  
  	if err != nil {
  		return resp, err
  	}
  
  	expired, err := tokenExpired(resp)
  
  	if err != nil || !expired {
  		return resp, err
  	}
  
  	if err := a.Refresh(); err != nil {
  		return nil, err
  	}
  
  	req.Header.Set("Authorization", "Bearer "+a.AccessToken())
  	return a.ApiClient.Do(clone)
  }
docs: // Do submits requests with bearer token authorization, using the AccessToken as the bearer token.
  //
  // Will automatically refresh the AccessToken and retry the request if the token has expired.