code: func (c *Client) healthchecker() {
  	c.mu.RLock()
  	timeout := c.healthcheckTimeout
  	interval := c.healthcheckInterval
  	c.mu.RUnlock()
  
  	ticker := time.NewTicker(interval)
  	defer ticker.Stop()
  
  	for {
  		select {
  		case <-c.healthcheckStop:
  			// we are asked to stop, so we signal back that we're stopping now
  			c.healthcheckStop <- true
  			return
  		case <-ticker.C:
  			c.healthcheck(context.Background(), timeout, false)
  		}
  	}
  }
docs: // healthchecker periodically runs healthcheck.