code: func NewEventer() Eventer {
  	evtr := &eventer{
  		eventnames: make(map[string]string),
  		in:         make(eventChannel, eventChanBufferSize),
  		outs:       make(map[eventChannel]eventChannel),
  	}
  
  	// goroutine to cascade "in" events to all "out" event channels
  	go func() {
  		for {
  			select {
  			case evt := <-evtr.in:
  				evtr.eventsMutex.Lock()
  				for _, out := range evtr.outs {
  					out <- evt
  				}
  				evtr.eventsMutex.Unlock()
  			}
  		}
  	}()
  
  	return evtr
  }
docs: // NewEventer returns a new Eventer.