code: func (s *SimpleHeart) heartbeat() {
  	ticker := time.NewTicker(s.Interval)
  	defer ticker.Stop()
  
  	for {
  		select {
  		case <-ticker.C:
  			s.touch()
  		case <-s.closer:
  			return
  		}
  	}
  }
docs: // heartbeat is a function responsible for ticking the updater.
  //
  // It uses a `select` statement to either gather an update from the time.Ticker
  // or a close operation. When the Updater is called, the `now` time is passed
  // from whatever was on the `ticker.C` channel (`<-chan time.Time`).
  //
  // If any error occurs during operation, it will be masqueraded up to the
  // `s.errs` channel, accessible by the `Errs()` function.
  //
  // It runs in its own goroutine.