code: func (c *IPCClient) RegisterQuery(q *serf.Query) uint64 {
  	// Generate a unique-per-client ID
  	id := c.nextQueryID()
  
  	// Ensure the query deadline is in the future
  	timeout := q.Deadline().Sub(time.Now())
  	if timeout < 0 {
  		return id
  	}
  
  	// Register the query
  	c.queryLock.Lock()
  	c.pendingQueries[id] = q
  	c.queryLock.Unlock()
  
  	// Setup a timer to deregister after the timeout
  	time.AfterFunc(timeout, func() {
  		c.queryLock.Lock()
  		delete(c.pendingQueries, id)
  		c.queryLock.Unlock()
  	})
  	return id
  }
docs: // RegisterQuery is used to register a pending query that may
  // get a response. The ID of the query is returned