code: func NewAddrDialer(addrs []utils.NetAddr) DialContext {
  	dialer := net.Dialer{
  		Timeout:   defaults.DefaultDialTimeout,
  		KeepAlive: defaults.ReverseTunnelAgentHeartbeatPeriod,
  	}
  	return func(in context.Context, network, _ string) (net.Conn, error) {
  		var err error
  		var conn net.Conn
  		for _, addr := range addrs {
  			conn, err = dialer.DialContext(in, network, addr.Addr)
  			if err == nil {
  				return conn, nil
  			}
  			log.Errorf("Failed to dial auth server %v: %v.", addr.Addr, err)
  		}
  		// not wrapping on purpose to preserve the original error
  		return nil, err
  	}
  }
docs: // NewAddrDialer returns new dialer from a list of addresses