/* eslint-disable no-console, func-names */
'use strict';
var RandomStream = require('random-stream');
var Colorize = require('colorize-stream');
var Chopped = require('chopped-stream');
var through2 = require('through2');
var bubbleError = require('./');
var pump = require('pump');
function getColoredRandomGibberishStream() {
var randomStream = RandomStream({
min: 1, // in milliseconds
max: 50 // in milliseconds
});
var colorizeStream = Colorize('cyan');
var choppedStream = Chopped(100);
var finalStream = through2();
// artificially create an error in an intermediate stream to test the bubbling
var i = 0;
choppedStream.on('data', function() {
if (++i === 3) {
this.emit('error', new Error('3 is unlucky!'));
}
});
// bubbleError will return the array of streams passed as params
// pump is used to pipe the streams && destroy them when they're done
// this will return `finalStream`
return pump.apply(null, bubbleError(
randomStream, colorizeStream, choppedStream, finalStream
));
}
getColoredRandomGibberishStream().on('error', function(err) {
console.error('\nSomething bad happened: %s', err.message);
process.exit(1);
}).pipe(process.stdout);