code: func (e *Events) PublishMessage(jm eventtypes.Message) {
  	eventsCounter.Inc()
  
  	e.mu.Lock()
  	if len(e.events) == cap(e.events) {
  		// discard oldest event
  		copy(e.events, e.events[1:])
  		e.events[len(e.events)-1] = jm
  	} else {
  		e.events = append(e.events, jm)
  	}
  	e.mu.Unlock()
  	e.pub.Publish(jm)
  }
docs: // PublishMessage broadcasts event to listeners. Each listener has 100 milliseconds to
  // receive the event or it will be skipped.