in cmd/lb_list.go [55:99]
func (o lbListOperation) find() (elbv2.LoadBalancers, error) {
	var wg sync.WaitGroup
	o.output.Debug("Describing Load Balancers [API=elbv2 Action=DescribeLoadBalancers]")
	loadBalancers, err := o.elbv2.DescribeLoadBalancers()
	if err != nil {
		return elbv2.LoadBalancers{}, err
	}
	errs := make(chan error)
	done := make(chan bool)
	limiter := rate.NewLimiter(describeRequestLimitRate, 1)
	for i := 0; i < len(loadBalancers); i++ {
		wg.Add(1)
		go func(index int) {
			defer wg.Done()
			if err := limiter.Wait(context.Background()); err == nil {
				o.output.Debug("Describing Listeners [API=elbv2 Action=DescribeListeners LoadBalancerArn=%s]", loadBalancers[index].ARN)
				listeners, err := o.elbv2.DescribeListeners(loadBalancers[index].ARN)
				if err != nil {
					errs <- err
				}
				loadBalancers[index].Listeners = listeners
			}
		}(i)
	}
	go func() {
		wg.Wait()
		done <- true
	}()
	select {
	case err := <-errs:
		return elbv2.LoadBalancers{}, err
	case <-done:
		return loadBalancers, nil
	}
}