<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>I think I'd rather see `Promise.resolve` changed to use `this.constructor` instead of `this.[[PromiseConstructor]]`, like every other Promise-related method.  Can someone who feels strongly otherwise give me the use case for `[[PromiseConstructor]]` existing?<br></div></div></div></div></blockquote><div><br></div><div>I'll give it a shot.</div><div><br></div><div>"Promise.resolve", executed on a constructor C, with argument x, should only return x if x was created by C.[[Construct]].  Otherwise it should create an instance of C which is resolved with x.</div><div><br></div><div>If we used "x.constructor" to determine the actual constructor, then someone could just change the "constructor" property for x and fool someone who wrote "C.resolve(x)" and expected to get an instance of C back.</div><div><br></div><div>It would be an unreliable, unsound conversion function.</div><div><br></div><div>Proper subclassing requires subclassing support from the engine.</div></div></div>