code: func NewBearerAuthWithRefreshRoundTripper(bearer string, tokenFile string, rt http.RoundTripper) (http.RoundTripper, error) {
  	if len(tokenFile) == 0 {
  		return &bearerAuthRoundTripper{bearer, nil, rt}, nil
  	}
  	source := NewCachedFileTokenSource(tokenFile)
  	if len(bearer) == 0 {
  		token, err := source.Token()
  		if err != nil {
  			return nil, err
  		}
  		bearer = token.AccessToken
  	}
  	return &bearerAuthRoundTripper{bearer, source, rt}, nil
  }
docs: // NewBearerAuthRoundTripper adds the provided bearer token to a request
  // unless the authorization header has already been set.
  // If tokenFile is non-empty, it is periodically read,
  // and the last successfully read content is used as the bearer token.
  // If tokenFile is non-empty and bearer is empty, the tokenFile is read
  // immediately to populate the initial bearer token.