code: func (c *CheckHTTP) Start() {
  	c.stopLock.Lock()
  	defer c.stopLock.Unlock()
  
  	if c.httpClient == nil {
  		// Create the transport. We disable HTTP Keep-Alive's to prevent
  		// failing checks due to the keepalive interval.
  		trans := cleanhttp.DefaultTransport()
  		trans.DisableKeepAlives = true
  
  		// Take on the supplied TLS client config.
  		trans.TLSClientConfig = c.TLSClientConfig
  
  		// Create the HTTP client.
  		c.httpClient = &http.Client{
  			Timeout:   10 * time.Second,
  			Transport: trans,
  		}
  
  		// For long (>10s) interval checks the http timeout is 10s, otherwise the
  		// timeout is the interval. This means that a check *should* return
  		// before the next check begins.
  		if c.Timeout > 0 && c.Timeout < c.Interval {
  			c.httpClient.Timeout = c.Timeout
  		} else if c.Interval < 10*time.Second {
  			c.httpClient.Timeout = c.Interval
  		}
  	}
  
  	c.stop = false
  	c.stopCh = make(chan struct{})
  	go c.run()
  }
docs: // Start is used to start an HTTP check.
  // The check runs until stop is called