Simplify EventBus

Refactor the EventBus dispatch approach to be synchronous. This makes testing more deterministic and removes some unnecessary layers of goroutines.