1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
function* wrapNoThrow() { let iter = { [Symbol.iterator]() { return this; }, next() { return {}; }, return () {} }; for (const i of iter) yield i; } function foo() { l2: for (j of wrapNoThrow()) { for (i of [1, 2, 3]) break l2; return false; } } try { foo(); } catch {}