// This was the actual bug assertRaises(StopIteration, function() { Iterator.prototype.next(); Iterator.prototype.next(); }); // The error should have triggered here, but was masked by a latent bug assertRaises(StopIteration, function() { Iterator.prototype.next(); }); // Found by fuzzing assertRaises(StopIteration, function() { (new Iterator({})).__proto__.next(); }); function assertRaises(exc, callback) { var caught = false; try { callback(); } catch (e) { assertEq(e instanceof StopIteration, true); caught = true; } assertEq(caught, true); }