code: func NewClientWithConfig(uri, key string, config Config) (Client, error) {
  	if config.Pin == nil {
  		return NewClient(uri, key)
  	}
  	d := &pinned.Config{Pin: config.Pin}
  	if config.Domain != "" {
  		d.Config = &tls.Config{ServerName: config.Domain}
  	}
  	httpClient := &http.Client{Transport: &http.Transport{DialTLS: d.Dial}}
  	c := newClient(key, uri, httpClient)
  	c.Host = config.Domain
  	c.HijackDial = d.Dial
  	return c, nil
  }
docs: // NewClientWithConfig acts like NewClient, but supports custom configuration.