blob: 4c478c270b381c5f99f0bcf4428041366277a6d5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
// |reftest| async
// Copyright (C) 2018 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%asyncfromsynciteratorprototype%.throw
description: throw() will return rejected promise if sync `throw` undefined
info: |
%AsyncFromSyncIteratorPrototype%.throw ( value )
...
2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
...
6. Let throw be GetMethod(syncIterator, "throw").
[...]
8. If throw is undefined, then
...
g. Perform ! Call(promiseCapability.[[Reject]], undefined, « a newly created TypeError object »).
h. Return promiseCapability.[[Promise]].
flags: [async]
features: [async-iteration]
includes: [asyncHelpers.js]
---*/
var obj = {
[Symbol.iterator]() {
return {
next() {
return { value: 1, done: false };
}
};
}
};
async function* asyncg() {
yield* obj;
}
var iter = asyncg();
asyncTest(async function () {
await assert.throwsAsync(TypeError, async () => {
await iter.next();
return iter.throw();
}, "Promise should be rejected");
const result = await iter.next();
assert(result.done, "the iterator is completed");
assert.sameValue(result.value, undefined, "value is undefined");
})
|