queue.go
func (q *Queue) Enumerate(cancel <-chan struct{}) Enumerator {
	q.key.RLock()
	defer q.key.RUnlock()
	return q.underlyer.Enumerate(cancel)
}
func (q *Queue) Enumerate(cancel <-chan struct{}) Enumerator {
	q.key.RLock()
	defer q.key.RUnlock()
	return q.underlyer.Enumerate(cancel)
}
// Enumerate peeks at each element of this queue without mutating it.