function shouldBe(actual, expected) { if (actual !== expected) throw new Error(`bad value: ${String(actual)}`); } function error() { throw "ok"; } function* gen() { var value = 42; try { yield 300; value = 500; error(); } catch (e) { yield 42; return value; } return 200; } var g = gen(); shouldBe(g.next().value, 300); shouldBe(g.next().value, 42); shouldBe(g.next().value, 500);