for working with pushing sources.
function wrap(emitter, event){
var queue = new Queue;
emitter.on(event, queue.push);
return function*(end){
if (!end) return yield queue.next;
};
}
var read = wrap(emitter, 'data');
while (true) console.log(yield read());
for working with pushing sources.