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...')");