'use strict';
var once = require('once');
var sliced = require('sliced');
function propagateErrorEvent(to) {
var reEmitEvent = once(function reEmitEvt(obj, args) {
obj.emit.apply(obj, args);
});
return function interceptEmit(from) {
var originalEmit = from.emit;
from.emit = function emit() {
var args = sliced(arguments);
if (args[0] !== 'error') {
originalEmit.apply(from, args);
} else {
reEmitEvent(to, args);
}
};
};
}
module.exports = function bubbleError() {
var streams = sliced(arguments);
var len = streams.length;
if (len > 1) {
var propagateError = propagateErrorEvent(streams[len - 1]);
for (var i = 0; i < len - 1; i++) {
propagateError(streams[i]);
}
}
return streams;
};