module.exports = function(obj){ var onData , onEnd , events = []; // buffer data obj.on('data', onData = function(data, encoding){ events.push(['data', data, encoding]); }); // buffer end obj.on('end', onEnd = function(data, encoding){ events.push(['end', data, encoding]); }); return { end: function(){ obj.removeListener('data', onData); obj.removeListener('end', onEnd); }, resume: function(){ this.end(); for (var i = 0, len = events.length; i < len; ++i) { obj.emit.apply(obj, events[i]); } } }; };