From 0c297c9a92b4a4eb5f0ddf0415d223d8840ca1e2 Mon Sep 17 00:00:00 2001 From: Micooz Date: Sun, 15 Oct 2017 12:14:56 +0800 Subject: [PATCH] core: catch errors throw from presets at pipe() --- src/core/pipe.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/core/pipe.js b/src/core/pipe.js index 42f080b..927d5b0 100644 --- a/src/core/pipe.js +++ b/src/core/pipe.js @@ -1,6 +1,7 @@ import EventEmitter from 'events'; import {MIDDLEWARE_DIRECTION_UPWARD} from './middleware'; import {PRESET_FAILED} from '../presets/defs'; +import {logger} from '../utils'; // .on('broadcast') // .on(`pre_${direction}`) @@ -65,14 +66,18 @@ export class Pipe extends EventEmitter { } feed(direction, buffer) { - // cache the current buffer for PRESET_FAILED action - this._cacheBuffer = buffer; - // pre-feed hook - const preEventName = `pre_${direction}`; - if (this.listenerCount(preEventName) > 0) { - this.emit(preEventName, buffer, (buf) => this._feed(direction, buf)); - } else { - this._feed(direction, buffer); + try { + // cache the current buffer for PRESET_FAILED action + this._cacheBuffer = buffer; + // pre-feed hook + const preEventName = `pre_${direction}`; + if (this.listenerCount(preEventName) > 0) { + this.emit(preEventName, buffer, (buf) => this._feed(direction, buf)); + } else { + this._feed(direction, buffer); + } + } catch (err) { + logger.error(`[pipe] error occurred while piping: ${err.message}`); } }