| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Flags: --allow-natives-syntax |
| |
| const actual = []; |
| |
| function createIterator() { |
| return { |
| [Symbol.iterator]() { return this; }, |
| |
| throw() { |
| return { value: Promise.resolve(1), done: true}; |
| } |
| }; |
| } |
| |
| actual.push("start"); |
| iter = %CreateAsyncFromSyncIterator(createIterator()); |
| |
| Promise.resolve(0) |
| .then(() => actual.push("tick 1")) |
| .then(() => actual.push("tick 2")) |
| .then(() => actual.push("tick 3")) |
| .then(() => actual.push("tick 4")) |
| .then(() => actual.push("tick 5")); |
| |
| let p = iter.throw(); |
| p.then(_ => { actual.push("done"); } ); |
| |
| %PerformMicrotaskCheckpoint(); |
| assertSame("start,tick 1,tick 2,done,tick 3,tick 4,tick 5", actual.join(",")) |