initial attempt at event handling.

// @sindresorhus @CWSpear 
:+1: thanks for roughing through these implementations! We can definitely refactor a lot of things going forward. That day may be approaching sooner than later!