code: func NewDialer(dial DialFunc) *Dialer {
  	return &Dialer{
  		dial:  dial,
  		conns: make(map[*closableConn]struct{}),
  	}
  }
docs: // NewDialer creates a new Dialer instance.
  //
  // If dial is not nil, it will be used to create new underlying connections.
  // Otherwise net.DialContext is used.