browser.js |
|
0 |
capability-executor-called-twice.js |
---
es6id: 25.4.4.3
description: >
Throws a TypeError if capabilities executor already called with non-undefined values.
info: |
Promise.race ( iterable )
...
6. Let promiseCapability be NewPromiseCapability(C).
7. ReturnIfAbrupt(promiseCapability).
...
25.4.1.5.1 GetCapabilitiesExecutor Functions
...
3. If promiseCapability.[[Resolve]] is not undefined, throw a TypeError exception.
4. If promiseCapability.[[Reject]] is not undefined, throw a TypeError exception.
5. Set promiseCapability.[[Resolve]] to resolve.
6. Set promiseCapability.[[Reject]] to reject.
...
--- |
2932 |
capability-executor-not-callable.js |
---
es6id: 25.4.4.3
description: >
Throws a TypeError if either resolve or reject capability is not callable.
info: |
Promise.race ( iterable )
...
6. Let promiseCapability be NewPromiseCapability(C).
7. ReturnIfAbrupt(promiseCapability).
...
25.4.1.5 NewPromiseCapability ( C )
...
4. Let executor be a new built-in function object as defined in GetCapabilitiesExecutor Functions (25.4.1.5.1).
5. Set the [[Capability]] internal slot of executor to promiseCapability.
6. Let promise be Construct(C, «executor»).
7. ReturnIfAbrupt(promise).
8. If IsCallable(promiseCapability.[[Resolve]]) is false, throw a TypeError exception.
9. If IsCallable(promiseCapability.[[Reject]]) is false, throw a TypeError exception.
...
--- |
2749 |
ctx-ctor-throws.js |
---
description: >
`Promise.race` invoked on a constructor value that throws an error
es6id: 25.4.4.3
info: |
1. Let C be the this value.
[...]
6. Let promiseCapability be NewPromiseCapability(C).
7. ReturnIfAbrupt(promiseCapability).
25.4.1.5 NewPromiseCapability
[...]
6. Let promise be Construct(C, «executor»).
7. ReturnIfAbrupt(promise).
--- |
698 |
ctx-ctor.js |
---
description: >
`Promise.race` invoked on a constructor value
es6id: 25.4.4.3
info: |
1. Let C be the this value.
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
10. Let iteratorRecord be Record {[[iterator]]: iterator, [[done]]: false}.
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
13. Return Completion(result).
features: [class]
--- |
988 |
ctx-non-ctor.js |
---
description: >
`Promise.race` invoked on a non-constructor value
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
7. ReturnIfAbrupt(promiseCapability).
25.4.1.5 NewPromiseCapability ( C )
1. If IsConstructor(C) is false, throw a TypeError exception.
--- |
553 |
ctx-non-object.js |
---
description: >
`Promise.race` invoked on a non-object value
es6id: 25.4.4.3
info: |
1. Let C be the this value.
2. If Type(C) is not Object, throw a TypeError exception.
features: [Symbol]
--- |
829 |
invoke-resolve-error-close.js |
---
description: >
Explicit iterator closing in response to error from `Promise.resolve`
esid: sec-promise.race
info: |
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
12. If result is an abrupt completion, then
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator,result).
b. IfAbruptRejectPromise(result, promiseCapability).
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
i. ReturnIfAbrupt(nextPromise).
features: [Symbol.iterator]
--- |
1196 |
invoke-resolve-error-reject.js |
---
description: Promise rejection in response to error from `Promise.resolve`
esid: sec-promise.race
info: |
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
12. If result is an abrupt completion, then
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator,result).
b. IfAbruptRejectPromise(result, promiseCapability).
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
i. ReturnIfAbrupt(nextPromise).
flags: [async]
--- |
1145 |
invoke-resolve-get-error-reject.js |
---
description: >
Error retrieving the constructor's `resolve` method (promise rejection)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
i. ReturnIfAbrupt(nextPromise).
flags: [async]
--- |
1120 |
invoke-resolve-get-error.js |
---
esid: sec-promise.race
description: >
Promise.resolve is retrieved before GetIterator call (abrupt lookup).
info: |
Promise.race ( iterable )
[...]
3. Let promiseResolve be GetPromiseResolve(C).
4. IfAbruptRejectPromise(promiseResolve, promiseCapability).
GetPromiseResolve ( promiseConstructor )
[...]
2. Let promiseResolve be ? Get(promiseConstructor, "resolve").
flags: [async]
features: [Symbol.iterator]
--- |
1019 |
invoke-resolve-get-once-multiple-calls.js |
---
description: >
Gets constructor's `resolve` method once from zero to many invocations.
esid: sec-promise.race
info: |
Runtime Semantics: PerformPromiseRace
1. Let promiseResolve be ? Get(constructor, `"resolve"`).
1. If IsCallable(promiseResolve) is false, throw a TypeError exception.
...
1. Repeat,
...
1. Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
--- |
1168 |
invoke-resolve-get-once-no-calls.js |
---
description: >
Gets constructor's `resolve` method once from zero to many invocations.
esid: sec-promise.race
info: |
Runtime Semantics: PerformPromiseRace
1. Let promiseResolve be ? Get(constructor, `"resolve"`).
1. If IsCallable(promiseResolve) is false, throw a TypeError exception.
...
1. Repeat,
...
1. Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
--- |
1032 |
invoke-resolve-on-promises-every-iteration-of-custom.js |
---
description: >
Invocation of the constructor's `resolve` method for iterable with promise values
esid: sec-promise.race
info: |
Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability, promiseResolve).
PerformPromiseRace
Repeat
...
i. Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
flags: [async]
features: [class, arrow-function]
--- |
1257 |
invoke-resolve-on-promises-every-iteration-of-promise.js |
---
description: >
Invocation of the constructor's `resolve` method for iterable with promise values
esid: sec-promise.race
info: |
Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability, promiseResolve).
PerformPromiseRace
Repeat
...
i. Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
flags: [async]
features: [arrow-function]
--- |
901 |
invoke-resolve-on-values-every-iteration-of-promise.js |
---
description: >
Invocation of the constructor's `resolve` method for iterable with non-promise values
esid: sec-promise.race
info: |
Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability, promiseResolve).
PerformPromiseRace
Repeat
...
i. Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
flags: [async]
features: [arrow-function]
--- |
916 |
invoke-resolve-return.js |
---
description: Use of the value returned by the constructor's `resolve` method.
es6id: 25.4.4.1
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
[...]
--- |
1269 |
invoke-resolve.js |
---
description: >
Invocation of the constructor's `resolve` method
es6id: 25.4.4.3
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
--- |
1265 |
invoke-then-error-close.js |
---
description: >
Error thrown when invoking the instance's `then` method (closing iterator)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
k. ReturnIfAbrupt(result).
features: [Symbol.iterator]
--- |
1293 |
invoke-then-error-reject.js |
---
description: >
Error thrown when invoking the instance's `then` method (rejecting promise)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
k. ReturnIfAbrupt(result).
flags: [async]
--- |
1163 |
invoke-then-get-error-close.js |
---
description: >
Error thrown when accessing the instance's `then` method (closing iterator)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
k. ReturnIfAbrupt(result).
features: [Symbol.iterator]
--- |
1333 |
invoke-then-get-error-reject.js |
---
description: >
Error thrown when accessing the instance's `then` method (rejecting promise)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
k. ReturnIfAbrupt(result).
flags: [async]
--- |
1203 |
invoke-then.js |
---
description: >
Invocation of the instance's `then` method
es6id: 25.4.4.3
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
k. ReturnIfAbrupt(result).
--- |
1570 |
iter-arg-is-false-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument is `false`
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
907 |
iter-arg-is-null-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument is `null`
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
905 |
iter-arg-is-number-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument is a number
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
904 |
iter-arg-is-string-resolve.js |
---
esid: sec-promise.race
description: >
Resolve when argument is a string
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
893 |
iter-arg-is-symbol-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument is a symbol
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
911 |
iter-arg-is-true-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument is `true`
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
905 |
iter-arg-is-undefined-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument is `undefined`
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
915 |
iter-assigned-false-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value false
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
972 |
iter-assigned-null-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value null
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
970 |
iter-assigned-number-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value 1
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
964 |
iter-assigned-string-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value ""
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
966 |
iter-assigned-symbol-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value Symbol()
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
978 |
iter-assigned-true-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value true
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
970 |
iter-assigned-undefined-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator property has the value undefined
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
980 |
iter-next-val-err-no-close.js |
---
description: >
Error when accessing an iterator result's `value` property (not closing
iterator)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
e. Let nextValue be IteratorValue(next).
f. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
true.
g. ReturnIfAbrupt(nextValue).
features: [Symbol.iterator]
--- |
1360 |
iter-next-val-err-reject.js |
---
description: >
Error when accessing an iterator result's `value` property (rejecting
promise)
esid: sec-promise.race
info: |
11. Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability).
12. If result is an abrupt completion,
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator, result).
b. IfAbruptRejectPromise(result, promiseCapability).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
e. Let nextValue be IteratorValue(next).
f. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
true.
g. ReturnIfAbrupt(nextValue).
features: [Symbol.iterator]
flags: [async]
--- |
1398 |
iter-returns-false-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns false
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
980 |
iter-returns-null-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns null
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
978 |
iter-returns-number-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns a number
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
979 |
iter-returns-string-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns a string
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
980 |
iter-returns-symbol-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns a symbol
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
986 |
iter-returns-true-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns true
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
978 |
iter-returns-undefined-reject.js |
---
esid: sec-promise.race
description: >
Reject when argument's Symbol.iterator returns undefined
info: |
...
Let iteratorRecord be GetIterator(iterable).
IfAbruptRejectPromise(iteratorRecord, promiseCapability).
...
#sec-getiterator
GetIterator ( obj [ , hint [ , method ] ] )
...
Let iterator be ? Call(method, obj).
If Type(iterator) is not Object, throw a TypeError exception.
...
features: [Symbol.iterator]
flags: [async]
--- |
988 |
iter-step-err-no-close.js |
---
description: >
Error when advancing the provided iterable (not closing iterator)
esid: sec-promise.race
info: |
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
12. If result is an abrupt completion, then
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator,result).
b. IfAbruptRejectPromise(result, promiseCapability).
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
c. ReturnIfAbrupt(next).
features: [Symbol.iterator]
--- |
1452 |
iter-step-err-reject.js |
---
description: >
Error when advancing the provided iterable (rejecting promise)
esid: sec-promise.race
info: |
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
12. If result is an abrupt completion, then
a. If iteratorRecord.[[done]] is false, let result be
IteratorClose(iterator,result).
b. IfAbruptRejectPromise(result, promiseCapability).
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
c. ReturnIfAbrupt(next).
features: [Symbol.iterator]
flags: [async]
--- |
1491 |
length.js |
---
es6id: 25.4.4.3
description: Promise.race `length` property
info: |
ES6 Section 17:
Every built-in Function object, including constructors, has a length
property whose value is an integer. Unless otherwise specified, this value
is equal to the largest number of named arguments shown in the subclause
headings for the function description, including optional parameters.
[...]
Unless otherwise specified, the length property of a built-in Function
object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
[[Configurable]]: true }.
includes: [propertyHelper.js]
--- |
905 |
name.js |
---
es6id: 25.4.4.3
description: Promise.race `name` property
info: |
ES6 Section 17:
Every built-in Function object, including constructors, that is not
identified as an anonymous function has a name property whose value is a
String. Unless otherwise specified, this value is the name that is given to
the function in this specification.
[...]
Unless otherwise specified, the name property of a built-in Function
object, if it exists, has the attributes { [[Writable]]: false,
[[Enumerable]]: false, [[Configurable]]: true }.
includes: [propertyHelper.js]
--- |
886 |
not-a-constructor.js |
---
esid: sec-ecmascript-standard-built-in-objects
description: >
Promise.race does not implement [[Construct]], is not new-able
info: |
ECMAScript Function Objects
Built-in function objects that are not identified as constructors do not
implement the [[Construct]] internal method unless otherwise specified in
the description of a particular function.
sec-evaluatenew
...
7. If IsConstructor(constructor) is false, throw a TypeError exception.
...
includes: [isConstructor.js]
features: [Reflect.construct, arrow-function]
--- |
872 |
prop-desc.js |
---
es6id: 25.4.4.3_A1.2_T1
author: Jordan Harband
description: Promise.race property descriptor
info: |
ES6 Section 17
Every other data property described in clauses 18 through 26 and in Annex
B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false,
[[Configurable]]: true } unless otherwise specified.
includes: [propertyHelper.js]
--- |
586 |
reject-deferred.js |
---
description: Rejecting through deferred invocation of the provided resolving function
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.1 Promise Reject Functions
[...]
6. Return RejectPromise(promise, reason).
flags: [async]
--- |
1074 |
reject-from-same-thenable.js |
---
esid: sec-performpromiserace
description: >
Promise.race does not prevent resolve from being called multiple times.
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
includes: [promiseHelper.js]
--- |
1628 |
reject-ignored-deferred.js |
---
description: >
Resolved promises ignore rejections through deferred invocation of the
provided resolving function
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.1 Promise Reject Functions
[...]
2. Let promise be the value of F's [[Promise]] internal slot.
3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
slot.
4. If alreadyResolved.[[value]] is true, return undefined.
flags: [async]
--- |
1463 |
reject-ignored-immed.js |
---
description: >
Resolved promises ignore rejections through immediate invocation of the
provided resolving function
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.1 Promise Reject Functions
[...]
2. Let promise be the value of F's [[Promise]] internal slot.
3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
slot.
4. If alreadyResolved.[[value]] is true, return undefined.
flags: [async]
--- |
1258 |
reject-immed.js |
---
description: Rejecting through immediate invocation of the provided resolving function
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.1 Promise Reject Functions
[...]
6. Return RejectPromise(promise, reason).
flags: [async]
--- |
972 |
resolve-from-same-thenable.js |
---
esid: sec-performpromiserace
description: >
Promise.race does not prevent resolve from being called multiple times.
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
includes: [promiseHelper.js]
--- |
1620 |
resolve-ignores-late-rejection-deferred.js |
---
description: >
Resolved promises ignore rejections through deferred invocation of the
provided resolving function
esid: sec-promise.race
info: |
Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability, promiseResolve).
PerformPromiseRace
Repeat
...
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
features: [arrow-function]
includes: [promiseHelper.js]
--- |
1157 |
resolve-ignores-late-rejection.js |
---
description: >
Resolved promises ignore rejections through immediate invocation of the
provided resolving function
esid: sec-promise.race
info: |
Let result be PerformPromiseRace(iteratorRecord, C, promiseCapability, promiseResolve).
PerformPromiseRace
Repeat
...
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
features: [arrow-function]
--- |
884 |
resolve-non-callable.js |
---
esid: sec-promise.race
description: >
Promise.resolve is retrieved before GetIterator call (non-callable).
info: |
Promise.race ( iterable )
[...]
3. Let promiseResolve be GetPromiseResolve(C).
4. IfAbruptRejectPromise(promiseResolve, promiseCapability).
GetPromiseResolve ( promiseConstructor )
[...]
2. Let promiseResolve be ? Get(promiseConstructor, "resolve").
3. If IsCallable(promiseResolve) is false, throw a TypeError exception.
flags: [async]
features: [Symbol.iterator]
--- |
1006 |
resolve-non-obj.js |
---
description: Resolving with a non-object value
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.2 Promise Resolve Functions
[...]
7. If Type(resolution) is not Object, then
a. Return FulfillPromise(promise, resolution).
flags: [async]
--- |
1108 |
resolve-non-thenable.js |
---
description: Resolving with a non-thenable object value
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.2 Promise Resolve Functions
[...]
8. Let then be Get(resolution, "then").
9. If then is an abrupt completion, then
[...]
10. Let thenAction be then.[[value]].
11. If IsCallable(thenAction) is false, then
a. Return FulfillPromise(promise, resolution).
flags: [async]
--- |
1282 |
resolve-poisoned-then.js |
---
description: Resolving with an object with a "poisoned" `then` property
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.2 Promise Resolve Functions
[...]
8. Let then be Get(resolution, "then").
9. If then is an abrupt completion, then
a. Return RejectPromise(promise, then.[[value]]).
flags: [async]
--- |
1304 |
resolve-prms-cstm-then.js |
---
description: Resolving with a resolved Promise instance whose `then` method has been overridden
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.2 Promise Resolve Functions
[...]
8. Let then be Get(resolution, "then").
9. If then is an abrupt completion, then
[...]
10. Let thenAction be then.[[value]].
11. If IsCallable(thenAction) is false, then
[...]
12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
«promise, resolution, thenAction»)
flags: [async]
--- |
1531 |
resolve-self.js |
---
description: Resolving with a reference to the promise itself
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.2 Promise Resolve Functions
[...]
6. If SameValue(resolution, promise) is true, then
a. Let selfResolutionError be a newly created TypeError object.
b. Return RejectPromise(promise, selfResolutionError).
flags: [async]
--- |
1497 |
resolve-thenable.js |
---
description: Resolving with a thenable object value
es6id: 25.4.4.3
info: |
[...]
6. Let promiseCapability be NewPromiseCapability(C).
[...]
11. Let result be PerformPromiseRace(iteratorRecord, promiseCapability, C).
[...]
25.4.4.3.1 Runtime Semantics: PerformPromiseRace
1. Repeat
[...]
j. Let result be Invoke(nextPromise, "then",
«promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
25.4.1.3.2 Promise Resolve Functions
[...]
8. Let then be Get(resolution, "then").
9. If then is an abrupt completion, then
[...]
10. Let thenAction be then.[[value]].
11. If IsCallable(thenAction) is false, then
[...]
12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
«promise, resolution, thenAction»)
flags: [async]
--- |
1437 |
resolved-sequence-extra-ticks.js |
---
esid: sec-promise.race
description: Resolution ticks are set in a predictable sequence with extra then calls
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
includes: [promiseHelper.js]
--- |
1306 |
resolved-sequence-mixed.js |
---
esid: sec-promise.race
description: >
Resolution ticks are set in a predictable sequence of mixed fulfilled and rejected promises
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
includes: [promiseHelper.js]
--- |
1491 |
resolved-sequence-with-rejections.js |
---
esid: sec-promise.race
description: Resolution ticks are set in a predictable sequence
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
includes: [compareArray.js, promiseHelper.js]
--- |
1745 |
resolved-sequence.js |
---
esid: sec-promise.race
description: Resolution ticks are set in a predictable sequence
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
includes: [compareArray.js,promiseHelper.js]
--- |
1733 |
resolved-then-catch-finally.js |
---
esid: sec-promise.race
description: >
Resolution the first resolved promise
info: |
PerformPromiseRace
Repeat,
Let next be IteratorStep(iteratorRecord).
If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(next).
If next is false, then
Set iteratorRecord.[[Done]] to true.
Return resultCapability.[[Promise]].
Let nextValue be IteratorValue(next).
If nextValue is an abrupt completion, set iteratorRecord.[[Done]] to true.
ReturnIfAbrupt(nextValue).
Let nextPromise be ? Call(promiseResolve, constructor, « nextValue »).
Perform ? Invoke(nextPromise, "then", « resultCapability.[[Resolve]], resultCapability.[[Reject]] »).
flags: [async]
--- |
1472 |
S25.4.4.3_A1.1_T1.js |
---
info: Promise.race is callable
es6id: S25.4.4.3_A1.1_T1
author: Sam Mikes
description: Promise.race is callable
--- |
353 |
S25.4.4.3_A2.1_T1.js |
---
info: Promise.race returns a new promise
es6id: S25.4.4.3_A2.1_T1
author: Sam Mikes
description: Promise.race returns a new promise
--- |
381 |
S25.4.4.3_A2.2_T1.js |
---
info: Promise.race rejects on non-iterable argument
es6id: S25.4.4.3_A2.2_T1
author: Sam Mikes
description: Promise.race rejects if argument is not object or is non-iterable
flags: [async]
--- |
636 |
S25.4.4.3_A2.2_T2.js |
---
info: Promise.race rejects on non-iterable argument
es6id: S25.4.4.3_A2.2_T2
author: Sam Mikes
description: Promise.race rejects if argument is not object or is non-iterable
flags: [async]
--- |
626 |
S25.4.4.3_A2.2_T3.js |
---
info: |
Promise.race rejects when GetIterator() returns an abrupt completion
4. Let iterator be GetIterator(iterable).
5. IfAbruptRejectPromise(iterator, promiseCapability)
es6id: S25.4.4.3_A2.2_T3
author: Sam Mikes
description: Promise.race rejects if GetIterator throws
features: [Symbol.iterator]
flags: [async]
--- |
877 |
S25.4.4.3_A3.1_T1.js |
---
info: |
Promise.race throws on invalid 'this'
Note: must have at least one element in array, or else Promise.race
never exercises the code that throws
es6id: S25.4.4.3_A3.1_T1
author: Sam Mikes
description: Promise.race throws if 'this' does not conform to Promise constructor
--- |
535 |
S25.4.4.3_A3.1_T2.js |
---
info: |
Promise.race must throw TypeError per
CreatePromiseCapabilityRecord step 8 when
promiseCapabliity.[[Resolve]] is not callable
es6id: S25.4.4.3_A3.1_T2
author: Sam Mikes
description: Promise.race throws TypeError, even on empty array, when 'this' does not conform to Promise constructor
--- |
586 |
S25.4.4.3_A4.1_T1.js |
---
es6id: S25.4.4.3_A4.1_T1
author: Sam Mikes
description: Promise.race rejects if IteratorStep throws
features: [Symbol.iterator]
flags: [async]
--- |
723 |
S25.4.4.3_A4.1_T2.js |
---
es6id: S25.4.4.3_A4.1_T2
author: Sam Mikes
description: Promise.race rejects if IteratorStep throws
features: [Symbol.iterator]
flags: [async]
--- |
906 |
S25.4.4.3_A5.1_T1.js |
---
es6id: S25.4.4.3_A5.1_T1
author: Sam Mikes
description: Promise.race([]) never settles
flags: [async]
--- |
546 |
S25.4.4.3_A6.1_T1.js |
---
es6id: S25.4.4.3_A6.1_T1
author: Sam Mikes
description: Promise.race([1]) settles immediately
includes: [promiseHelper.js]
flags: [async]
--- |
791 |
S25.4.4.3_A6.2_T1.js |
---
es6id: S25.4.4.3_A6.2_T1
author: Sam Mikes
description: Promise.race([p1]) settles immediately
includes: [promiseHelper.js]
flags: [async]
--- |
1038 |
S25.4.4.3_A7.1_T1.js |
---
es6id: S25.4.4.3_A7.1_T1
author: Sam Mikes
description: Promise.race([p1, p2]) settles when first settles
includes: [promiseHelper.js]
flags: [async]
--- |
1099 |
S25.4.4.3_A7.1_T2.js |
---
es6id: S25.4.4.3_A7.1_T2
author: Sam Mikes
description: Promise.race([p1, p2]) settles when first settles
includes: [promiseHelper.js]
flags: [async]
--- |
1107 |
S25.4.4.3_A7.1_T3.js |
---
es6id: S25.4.4.3_A7.1_T3
author: Sam Mikes
description: Promise.race([p1, p2]) settles when first settles
includes: [promiseHelper.js]
flags: [async]
--- |
1107 |
S25.4.4.3_A7.2_T1.js |
---
es6id: S25.4.4.3_A7.2_T1
author: Sam Mikes
description: Promise.race([p1, p2]) settles when first settles
includes: [promiseHelper.js]
flags: [async]
--- |
1189 |
S25.4.4.3_A7.3_T1.js |
---
es6id: S25.4.4.3_A7.3_T1
author: Sam Mikes
description: Promise.race([p1, p2]) settles when first settles
flags: [async]
--- |
653 |
S25.4.4.3_A7.3_T2.js |
---
es6id: S25.4.4.3_A7.3_T2
author: Sam Mikes
description: Promise.race([p1, p2]) settles when first settles
flags: [async]
--- |
676 |
same-reject-function.js |
---
es6id: 25.4.4.3.1
description: >
Each Promise.race element is called with the same reject function.
info: |
Runtime Semantics: PerformPromiseRace ( iteratorRecord, promiseCapability, C )
...
j. Let result be Invoke(nextPromise, "then", «promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
...
--- |
1131 |
same-resolve-function.js |
---
es6id: 25.4.4.3.1
description: >
Each Promise.race element is called with the same resolve function.
info: |
Runtime Semantics: PerformPromiseRace ( iteratorRecord, promiseCapability, C )
...
j. Let result be Invoke(nextPromise, "then", «promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
...
--- |
1138 |
shell.js |
|
0 |
species-get-error.js |
---
description: >
Promise.race() does not retrieve `Symbol.species` property of the `this` value
es6id: 25.4.4.3
info: |
1. Let C be the this value.
2. If Type(C) is not Object, throw a TypeError exception.
3. Let promiseCapability be ? NewPromiseCapability(C).
...
features: [Symbol.species]
--- |
759 |