// The first call to yield* passes one arg to "next". function Iter() { function next() { if (arguments.length != 1) throw Error; return { value: 42, done: true } } this.next = next; this[Symbol.iterator] = function () { return this; } } function* delegate(iter) { return yield* iter; } var iter = delegate(new Iter()); assertDeepEq(iter.next(), {value:42, done:true}); if (typeof reportCompare == "function") reportCompare(true, true);