eventd.go
func (b *Bus) Publish(eventName string, eventBody interface{}) {
	e := NewEvent(eventName, eventBody)

	b.mu.RLock()
	defer b.mu.RUnlock()
	for _, h := range b.handlers {
		h.Handle(e)
	}
}
func (b *Bus) Publish(eventName string, eventBody interface{}) {
	e := NewEvent(eventName, eventBody)

	b.mu.RLock()
	defer b.mu.RUnlock()
	for _, h := range b.handlers {
		h.Handle(e)
	}
}
// Publish an event.