code: func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter {
  	limiter := rate.NewLimiter(rate.Limit(qps), burst)
  	return newTokenBucketRateLimiter(limiter, realClock{}, qps)
  }
docs: // NewTokenBucketRateLimiter creates a rate limiter which implements a token bucket approach.
  // The rate limiter allows bursts of up to 'burst' to exceed the QPS, while still maintaining a
  // smoothed qps rate of 'qps'.
  // The bucket is initially filled with 'burst' tokens, and refills at a rate of 'qps'.
  // The maximum number of tokens in the bucket is capped at 'burst'.