http://www.ecma-international.org/ecma-262/6.0/#sec-promise.resolve the following lines of the spec text: 25.4.4.5.a 25.4.4.5.c Indicate class PromiseSubclass extends Promise { } PromiseSubclass.resolve(Promise.resolve()).constructor === PromiseSubclass; Unfortunately, today the following is true: PromiseSubclass.resolve(Promise.resolve()).constructor === Promise; Related patch to V8 -> https://codereview.chromium.org/1362773002
This is because the current Promise cannot be subclassible. We can fix this by using newTarget in C++ Promise constructor as a workaround. But ideally, this should be fixed by moving Promise to JS implemented constructor.
Promise subclassing was implemented in https://trac.webkit.org/changeset/191276. Tests: JSTests/es6/Promise_is_subclassable_*.js JSTests/stress/derived-promise-constructor-*.js *** This bug has been marked as a duplicate of bug 149380 ***