function flushBuffer() {
            while (running.length && running[0].buffer.length) {
                var buf = running[0].buffer;
                for (var i = 0; i < buf.length; i++) {
                    if (buf[i][1] === nil) {
                        // this stream has ended
                        running.shift();
                        break;
                    }
                    else {
                        // send the buffered output
                        push.apply(null, buf[i]);
                    }
                }
                buf.length = 0;
            }
        }
Takes a Stream of Streams and reads from them in parallel, buffering
the results until they can be returned to the consumer in their original
order.

@id parallel
@section Higher-order Streams
@name Stream.parallel(n)
@param {Number} n - the maximum number of concurrent reads/buffers
@api public

var readFile = _.wrapCallback(fs.readFile);
var filenames = _(['foo.txt', 'bar.txt', 'baz.txt']);

// read from up to 10 files at once
filenames.map(readFile).parallel(10);