code: func handle(dht *DHT, pkt packet) {
  	if len(dht.workerTokens) == dht.PacketWorkerLimit {
  		return
  	}
  
  	dht.workerTokens <- struct{}{}
  
  	go func() {
  		defer func() {
  			<-dht.workerTokens
  		}()
  
  		if dht.blackList.in(pkt.raddr.IP.String(), pkt.raddr.Port) {
  			return
  		}
  
  		data, err := Decode(pkt.data)
  		if err != nil {
  			return
  		}
  
  		response, err := parseMessage(data)
  		if err != nil {
  			return
  		}
  
  		if f, ok := handlers[response["y"].(string)]; ok {
  			f(dht, pkt.raddr, response)
  		}
  	}()
  }
docs: // handle handles packets received from udp.