@tmpsantos argued that we should keep this as a callback because in EventTarget, we'll get the info in the addXXXListener function and will store the callback to call when even is fired. I'm not 100% happy with this approach for EventTarget, but I think it's enough to keep using the callback.

So please ignore the whole "make it a class" comments.