code: func ListenAndServeTLS(addr, certFile, keyFile string, handler http.Handler) error {
  	// From http.ListenAndServeTLS:
  	// https://github.com/golang/go/blob/release-branch.go1.10/src/net/http/server.go#L3000-L3003
  	server := &http.Server{Addr: addr, Handler: handler}
  
  	keypair, err := NewKeypairReloader(certFile, keyFile)
  	if err != nil {
  		return err
  	}
  	server.TLSConfig = &tls.Config{GetCertificate: keypair.GetCertificateFunc()}
  
  	// The certFile and keyFile arguments below are ignored if the GetCertificate field is not nil.
  	return server.ListenAndServeTLS("", "")
  }
docs: // This works just like http.ListenAndServeTLS but certificates are loaded into
  // a wrapper struct that reloads certificates from disk when a SIGHUP is
  // received.