code: func (s *UtxoScanner) Enqueue(input *InputWithScript,
  	birthHeight uint32) (*GetUtxoRequest, error) {
  
  	log.Debugf("Enqueuing request for %s with birth height %d",
  		input.OutPoint.String(), birthHeight)
  
  	req := &GetUtxoRequest{
  		Input:       input,
  		BirthHeight: birthHeight,
  		resultChan:  make(chan *getUtxoResult, 1),
  		quit:        s.quit,
  	}
  
  	s.cv.L.Lock()
  	select {
  	case <-s.quit:
  		s.cv.L.Unlock()
  		return nil, ErrShuttingDown
  	default:
  	}
  
  	// Insert the request into the queue and signal any threads that might be
  	// waiting for new elements.
  	heap.Push(&s.pq, req)
  
  	s.cv.L.Unlock()
  	s.cv.Signal()
  
  	return req, nil
  }
docs: // Enqueue takes a GetUtxoRequest and adds it to the next applicable batch.