resolve()/reject() on Promise subclasses and @@species

Domenic Denicola d at
Wed Nov 18 23:50:08 UTC 2015

All uses of @@species are to be removed from Promise.race and Promise.all. The committee achieved consensus on this, without you.

From: es-discuss <es-discuss-bounces at> on behalf of C. Scott Ananian <ecmascript at>
Sent: Wednesday, November 18, 2015 18:15
To: Boris Zbarsky
Cc: es-discuss at list
Subject: Re: resolve()/reject() on Promise subclasses and @@species

Unfortunately, it's not just a specification device, it has a real effect on the behavior of Promise subclasses.  In the case of TimeoutPromise, for instance, it affects whether the timeouts apply to *each promise in the array* or just to the final result Promise.

I'm hearing through the grapevine ( that it has been decided to change the behavior of Promise.all/race. Have you decided to adopt the spec language I proposed above?  There has been precious little actual discussion of it, certainly not enough for me to claim any sort of consensus has been reached (except perhaps by default, since no one has  advocated for alternatives).


Remove @@species lookup from Promise.all() and Promise ...
Remove @@species lookup from Promise.all() and Promise.race() #151
Read more...<>


On 11/4/15 11:22 PM, C. Scott Ananian wrote:
see my previous message for the exact wording proposal which
changes step 6. you mean?

I don't have a strong opinion on it, honestly.  The existence of the intermediate promises in all/race seems mostly to be a specification device to make it easier to deal with people passing in not-thenable-at-all values, from my point of view, so I'm not sure I have a principled opinion on how they should be constructed.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list