code: func (s *MatcherSession) AllocateRetrieval() (uint, bool) {
  	fetcher := make(chan uint)
  
  	select {
  	case <-s.quit:
  		return 0, false
  	case s.matcher.retrievers <- fetcher:
  		bit, ok := <-fetcher
  		return bit, ok
  	}
  }
docs: // AllocateRetrieval assigns a bloom bit index to a client process that can either
  // immediately request and fetch the section contents assigned to this bit or wait
  // a little while for more sections to be requested.