code: func (tm *transactionManager) sendQuery(
  	no *node, queryType string, a map[string]interface{}) {
  
  	// If the target is self, then stop.
  	if no.id != nil && no.id.RawString() == tm.dht.node.id.RawString() ||
  		tm.getByIndex(tm.genIndexKey(queryType, no.addr.String())) != nil ||
  		tm.dht.blackList.in(no.addr.IP.String(), no.addr.Port) {
  		return
  	}
  
  	data := makeQuery(tm.genTransID(), queryType, a)
  	tm.queryChan <- &query{
  		node: no,
  		data: data,
  	}
  }
docs: // sendQuery send query-formed data to the chan.