code: func MakeRequestRetry(request rest.Request) (*rest.Response, error) {
  	retry := 0
  	var response *rest.Response
  	var err error
  
  	for {
  		response, err = MakeRequest(request)
  		if err != nil {
  			return nil, err
  		}
  
  		if response.StatusCode != http.StatusTooManyRequests {
  			return response, nil
  		}
  
  		if retry > rateLimitRetry {
  			return nil, errors.New("Rate limit retry exceeded")
  		}
  		retry++
  
  		resetTime := time.Now().Add(rateLimitSleep * time.Millisecond)
  
  		reset, ok := response.Headers["X-RateLimit-Reset"]
  		if ok && len(reset) > 0 {
  			t, err := strconv.Atoi(reset[0])
  			if err == nil {
  				resetTime = time.Unix(int64(t), 0)
  			}
  		}
  		time.Sleep(resetTime.Sub(time.Now()))
  	}
  }
docs: // MakeRequestRetry a synchronous request, but retry in the event of a rate
  // limited response.