// With yield*, inner and outer iterators can be invoked separately. function* g(n) { for (var i=0; i<n; i++) yield i; } function* delegate(iter) { return yield* iter; } var inner = g(20); var outer1 = delegate(inner); var outer2 = delegate(inner); assertIteratorNext(outer1, 0); assertIteratorNext(outer2, 1); assertIteratorNext(inner, 2); assertIteratorNext(outer1, 3); assertIteratorNext(outer2, 4); assertIteratorNext(inner, 5); if (typeof reportCompare == "function") reportCompare(true, true);