code: func NewLoadBalancer(ctx context.Context, frontend NetAddr, backends ...NetAddr) (*LoadBalancer, error) {
  	if ctx == nil {
  		return nil, trace.BadParameter("missing parameter context")
  	}
  	waitCtx, waitCancel := context.WithCancel(ctx)
  	return &LoadBalancer{
  		frontend:     frontend,
  		ctx:          ctx,
  		backends:     backends,
  		currentIndex: -1,
  		waitCtx:      waitCtx,
  		waitCancel:   waitCancel,
  		Entry: log.WithFields(log.Fields{
  			trace.Component: "loadbalancer",
  			trace.ComponentFields: log.Fields{
  				"listen": frontend.String(),
  			},
  		}),
  		connections: make(map[NetAddr]map[int64]net.Conn),
  	}, nil
  }
docs: // NewLoadBalancer returns new load balancer listening on frontend
  // and redirecting requests to backends using round robin algo