code: func (e *EventListener) CloseWithError(err error) {
  	e.closedMtx.Lock()
  	if e.closed {
  		e.closedMtx.Unlock()
  		return
  	}
  	e.closed = true
  	e.closedMtx.Unlock()
  
  	e.subMtx.RLock()
  	defer e.subMtx.RUnlock()
  	subscribers := e.subscribers
  	for _, subs := range subscribers {
  		for sub := range subs {
  			go sub.CloseWithError(err)
  		}
  	}
  	close(e.doneCh)
  }
docs: // CloseWithError marks the listener as closed and closes all subscribers
  // with the given error.