| function assert(b) { |
| if (!b) |
| throw new Error("Bad"); |
| } |
| |
| async function* asyncIterator() { |
| yield 42; |
| } |
| |
| function test1() { |
| let p = asyncIterator(); |
| p.next().then((x) => { |
| assert(x.value === 42); |
| assert(x.done === false); |
| }); |
| p.__proto__ = {}; |
| assert(p.next === undefined); |
| } |
| test1(); |
| |
| let error = null; |
| async function test2() { |
| let p2 = asyncIterator(); |
| p2.__proto__ = {}; |
| try { |
| for await (let x of p2) { |
| throw new Error("Bad!"); |
| } |
| } |
| catch(e) { |
| error = e; |
| } |
| } |
| test2(); |
| assert(error instanceof TypeError); |
| assert(error.message === "undefined is not a function (near '...x of p2...')"); |