code: func (wire *Wire) Run() {
  	go wire.blackList.clear()
  
  	for r := range wire.requests {
  		wire.workerTokens <- struct{}{}
  
  		go func(r Request) {
  			defer func() {
  				<-wire.workerTokens
  			}()
  
  			key := strings.Join([]string{
  				string(r.InfoHash), genAddress(r.IP, r.Port),
  			}, ":")
  
  			if len(r.InfoHash) != 20 || wire.blackList.in(r.IP, r.Port) ||
  				wire.queue.Has(key) {
  				return
  			}
  
  			wire.fetchMetadata(r)
  		}(r)
  	}
  }
docs: // Run starts the peer wire protocol.