Recently, I added a small set of functions to vrac.event to handle events in a way very similar to Re-frame.
vrac.event