nl_tokens: ES#sec - promise . all Promise . all ( iterable )
pl_tokens: function PromiseAll ( iterable ) { if ( ! IS_RECEIVER ( this ) ) { throw MakeTypeError ( kCalledOnNonObject , "Promise.all" ) ; } var deferred = NewPromiseCapability ( this ) ; var resolutions = <mask> InternalArray ( ) ; var count ; function CreateResolveElementFunction ( index , values , promiseCapability ) { var alreadyCalled = false ; return ( x ) => { if ( alreadyCalled === true ) return ; alreadyCalled = true ; values [ index ] = x ; if ( -- count === 0 ) { var valuesArray = [ ] ; % MoveArrayContents ( values , valuesArray ) ; % _Call ( promiseCapability . resolve , UNDEFINED , valuesArray ) ; } } ; } try { var i = 0 ; count = 1 ; for ( var value of iterable ) { var nextPromise = this . resolve ( value ) ; ++ count ; nextPromise . then ( CreateResolveElementFunction ( i , resolutions , deferred ) , deferred . reject ) ; SET_PRIVATE ( deferred . reject , promiseCombinedDeferredSymbol , deferred ) ; ++ i ; } // 6.d if ( -- count === 0 ) { var valuesArray = [ ] ; % MoveArrayContents ( resolutions , valuesArray ) ; % _Call ( deferred . resolve , UNDEFINED , valuesArray ) ; } } catch ( e ) { % _Call ( deferred . reject , UNDEFINED , e ) ; } return deferred . promise ; }