As for WeakMap, I wasn't even aware of that, looks awesome.
I think the point may be "Gator.on()" wouldn't need instances of anything allocated.
But then you lose chaining.
.on(x, e1, s1, c1)
.on(x, e2, s2, c2)
var onX = chainFn(Gator.on, x);
(e1, s1, c1)
(e2, s2, c2)