actual = ''; expected = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,'; function slice(a, b) { //return { x: a + ':' + b }; return b; } function f() { var length = 20; var index = 0; function get3() { //appendToActual("get3 " + index); if (length - index < 3) return null; return slice(index, ++index); } var bytes = null; while (bytes = get3()) { appendToActual(bytes); } } f(); assertEq(actual, expected)