code: func (m *Memberlist) triggerFunc(stagger time.Duration, C <-chan time.Time, stop <-chan struct{}, f func()) {
  	// Use a random stagger to avoid syncronizing
  	randStagger := time.Duration(uint64(rand.Int63()) % uint64(stagger))
  	select {
  	case <-time.After(randStagger):
  	case <-stop:
  		return
  	}
  	for {
  		select {
  		case <-C:
  			f()
  		case <-stop:
  			return
  		}
  	}
  }
docs: // triggerFunc is used to trigger a function call each time a
  // message is received until a stop tick arrives.