through.js 733 Bytes
var test = require('tape');
var resumer = require('../');
var concat = require('concat-stream');

test('through write/end', function (t) {
    t.plan(2);
    
    var s = createStream();
    
    s.on('okok', function () {
        t.ok(true);
    });
    
    s.pipe(concat(function (err, body) {
        t.equal(body, 'BEGIN\nRAWR\nEND\n');
    }));
    
    setTimeout(function () {
        s.end('rawr\n');
    }, 50);
});

function createStream () {
    var stream = resumer(write, end);
    stream.queue('BEGIN\n');
    return stream;
    
    function write (x) {
        this.queue(String(x).toUpperCase());
    }
    function end () {
        this.emit('okok');
        this.queue('END\n');
        this.queue(null);
    }
}