code: func (f *FIFO) Delete(obj interface{}) error {
  	id, err := f.keyFunc(obj)
  	if err != nil {
  		return KeyError{obj, err}
  	}
  	f.lock.Lock()
  	defer f.lock.Unlock()
  	f.populated = true
  	delete(f.items, id)
  	return err
  }
docs: // Delete removes an item. It doesn't add it to the queue, because
  // this implementation assumes the consumer only cares about the objects,
  // not the order in which they were created/added.