Right now we manually keep track of an array of exit events. I think we should use EventEmitter instead, which will have all the familiar semantics of Node.js events and useful extra methods (in particular .once).
Though maybe we should use EventTarget, the web-standard one, instead. Actually, seems kind of meh