Clarification for derived promises

# Nicholas C. Zakas (9 years ago)

I'm trying to wrap my head around derived promises and wanted to ask for a bit of clarification around how Promise.resolve() works from a derived class. Consider this:

class MyPromise extends Promise {}

var p1 = new Promise(function(resolve, reject) {
     resolve(42);
});

var p2 = MyPromise.resolve(p1);
p2.then(function(value) {
     console.log(value);
});

Am I correct in believing that:

  1. p1 is resolved upon being passed to MyPromise.resolve()? I believe this is what happens in 25.4.4.5 Step 6 (www.ecma-international.org/ecma-262/6.0/#sec-promise.resolve)
  2. p2 is an instance of MyPromise that is resolved with a promise value of 42.
# Domenic Denicola (9 years ago)

Yes.

# Nicholas C. Zakas (9 years ago)

Awesome, thank you!

# C. Scott Ananian (9 years ago)

And --- apologies for continuing to beat this drum --- you can look at the prfun package on npm for a practical example of this use of Promise subclasses and resolve.

If other folks know of other libraries using these features, let me know so I can recommend other people's code as well as my own. ;)