code: func (m *Memberlist) setAckHandler(seqNo uint32, ackFn func([]byte, time.Time), timeout time.Duration) {
  	// Add the handler
  	ah := &ackHandler{ackFn, nil, nil}
  	m.ackLock.Lock()
  	m.ackHandlers[seqNo] = ah
  	m.ackLock.Unlock()
  
  	// Setup a reaping routing
  	ah.timer = time.AfterFunc(timeout, func() {
  		m.ackLock.Lock()
  		delete(m.ackHandlers, seqNo)
  		m.ackLock.Unlock()
  	})
  }
docs: // setAckHandler is used to attach a handler to be invoked when an ack with a
  // given sequence number is received. If a timeout is reached, the handler is
  // deleted. This is used for indirect pings so does not configure a function
  // for nacks.