Allen Wirfs-Brock (2015-04-29T20:16:33.000Z)
d at domenic.me (2015-05-11T16:48:57.374Z)
On Apr 29, 2015, at 12:40 PM, C. Scott Ananian wrote: > The second occurrence. At that point all we know about x is that it's *not* something safe. We shouldn't be looking at `constructor` in that case. the last two lines of the above `resolve` method should be replaced with: ```js return super.resolve(x) ``` `x.construct === this` is the test that I propose `Promise.resolve` should make instead of testing [[PromiseConstructor]] There should probably also be another test that SpeciesConstructor(x)===this > If we get consensus, I can certainly ensure that es6-shim, core-js, and babel implement the "ES2016" semantics. I wouldn't jump the gun until we actually have TC39 consensus on a proposal. What we've shown is that the [[PromiseConstructor]] test was never sufficient to guarantee the invariant that Mark is concerned about and also that there probably isn't a generic check we can do that would satisfy his requirements. He has do it himself like shown above. But the specified [[PromiseConstructor]] test doesn't really hurt anything. It places some slight limitations on what subclasses can do, but probably doesn't interfere with anything an actual subclass is likely to do. It seems like a restriction than can be relaxed in the future without anybody (or than conformance tests) noticing.