var c = 0;
function g(o) {
    try {
	for(;;)
	    o.next();
    } catch(e) {
	c += e;
    }
    return o.x;
}
function f() {
    var o = {x: 0, next: function() {
	if (this.x++ > 100)
	    throw 3;
    }};

    g(o);
    assertEq(o.x, 102);

    o.x = 0;
    g(o);
    assertEq(o.x, 102);
}
f();
assertEq(c, 6);