Mark S. Miller (2015-04-29T17:00:45.000Z)
d at domenic.me (2015-05-11T16:43:22.913Z)
I have not responded on list yet because I haven't yet been able to find the time to absorb this thread. But since Allen mentioned it, what I wrote was: The invariant I am interested in: In a realm where we (the trusted defender who runs first) make Promise defensive as follows * Freeze everything primordial, as SES does * Make a DefensivePromise subclass of Promise that differs minimally, hopefully only by ensuring that its instances are frozen. * "Promise = DefensivePromise;" do "Promise" below refers to DefensivePromise * Freezing whitelisted global properties, as SES currently does for ES5 globals, but for ES6 including "Promise" then it must be the case that Promise.resolve(anything).then(anycallback) for an anything provided by a potential attacker, when executed in the middle of a turn does not call callback during that turn. If it calls anycallback at all, it calls it back *as* a later turn, i.e., in a later turn starting from an empty stack.