code: func (q *Queue) TakeUntil(checker func(item interface{}) bool) ([]interface{}, error) {
  	if checker == nil {
  		return nil, nil
  	}
  
  	q.lock.Lock()
  
  	if q.disposed {
  		q.lock.Unlock()
  		return nil, ErrDisposed
  	}
  
  	result := q.items.getUntil(checker)
  	q.lock.Unlock()
  	return result, nil
  }
docs: // TakeUntil takes a function and returns a list of items that
  // match the checker until the checker returns false.  This does not
  // wait if there are no items in the queue.