code: func newEventQueue(sink Sink, listeners ...eventQueueListener) *eventQueue {
  	eq := eventQueue{
  		sink:      sink,
  		events:    list.New(),
  		listeners: listeners,
  	}
  
  	eq.cond = sync.NewCond(&eq.mu)
  	go eq.run()
  	return &eq
  }
docs: // newEventQueue returns a queue to the provided sink. If the updater is non-
  // nil, it will be called to update pending metrics on ingress and egress.