code: func (s *Serf) registerQueryResponse(timeout time.Duration, resp *QueryResponse) {
  	s.queryLock.Lock()
  	defer s.queryLock.Unlock()
  
  	// Map the LTime to the QueryResponse. This is necessarily 1-to-1,
  	// since we increment the time for each new query.
  	s.queryResponse[resp.lTime] = resp
  
  	// Setup a timer to close the response and deregister after the timeout
  	time.AfterFunc(timeout, func() {
  		s.queryLock.Lock()
  		delete(s.queryResponse, resp.lTime)
  		resp.Close()
  		s.queryLock.Unlock()
  	})
  }
docs: // registerQueryResponse is used to setup the listeners for the query,
  // and to schedule closing the query after the timeout.