actual = ''; expected = '3,6,9,12,15,18,'; function slice(a, b) { //return { x: a + ':' + b }; return b; } function f(index) { var length = 20; function get3() { //appendToActual("get3 " + index); if (length - index < 3) return null; return slice(index, index += 3); } var bytes = null; while (bytes = get3()) { appendToActual(bytes); } } f(0); assertEq(actual, expected)