func singleThreadedWait(capacity float64, rl RateLimiter, res doorman.Resource, numLoops int) (time.Duration, error) { ctx := context.Background() res.Capacity() <- capacity start := time.Now() for i := 0; i < numLoops; i++ { err := rl.Wait(ctx) if err != nil { return 0, err } } return time.Since(start), nil }