code: func (s *reuseTokenSource) Token() (*Token, error) {
  	s.mu.Lock()
  	defer s.mu.Unlock()
  	if s.t.Valid() {
  		return s.t, nil
  	}
  	t, err := s.new.Token()
  	if err != nil {
  		return nil, err
  	}
  	s.t = t
  	return t, nil
  }
docs: // Token returns the current token if it's still valid, else will
  // refresh the current token (using r.Context for HTTP client
  // information) and return the new one.