an exploration of having event listeners be monads