code: func (cl *Client) listenSelfCheck(serverAddr string) error {
  	tr := &http.Transport{
  		TLSClientConfig: &tls.Config{
  			InsecureSkipVerify: true,
  			ServerName:         cl.challengeIP + SNISuffix,
  		},
  	}
  	httpClient := &http.Client{
  		Transport: tr,
  	}
  	errc := make(chan error, 1)
  	respc := make(chan *http.Response, 1)
  	var err error
  	var resp *http.Response
  	go func() {
  		resp, err := httpClient.PostForm(fmt.Sprintf("https://localhost:%d%s%s", ClientChallengedPort, clientHandlerPrefix, clientEndPointReady),
  			url.Values{"server": []string{serverAddr}})
  		errc <- err
  		respc <- resp
  	}()
  	timeout := time.NewTimer(time.Second)
  	defer timeout.Stop()
  	select {
  	case err = <-errc:
  		resp = <-respc
  	case <-timeout.C:
  		return errors.New("The client needs an HTTPS listener for its handler to answer the server's challenge. You need to call Handler and register the http.Handler with an HTTPS server, before calling Challenge.")
  	}
  	if err != nil {
  		return fmt.Errorf("error starting challenge: %v", err)
  	}
  	defer resp.Body.Close()
  	if resp.StatusCode != http.StatusNoContent {
  		return fmt.Errorf("error starting challenge: %v", resp.Status)
  	}
  	return nil
  }
docs: // listenSelfCheck tests whether the client is ready to receive a challenge,
  // i.e. that the caller has registered the client's handler with a server.