code: func (wp *WorkerPool) Drain() {
  	wg := sync.WaitGroup{}
  	for _, w := range wp.workers {
  		wg.Add(1)
  		go func(w *worker) {
  			w.drain()
  			wg.Done()
  		}(w)
  	}
  	wg.Wait()
  }
docs: // Drain drains all jobs in the queue before returning. Note that if jobs are added faster than we can process them, this function wouldn't return.