/**!
							 | 
						|
								 * end-or-error - index.js
							 | 
						|
								 *
							 | 
						|
								 * Copyright(c) stream-utils and other contributors.
							 | 
						|
								 * MIT Licensed
							 | 
						|
								 *
							 | 
						|
								 * Authors:
							 | 
						|
								 *   fengmk2 <m@fengmk2.com> (http://fengmk2.com)
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								'use strict';
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Module dependencies.
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								module.exports = function eoe(stream, cb) {
							 | 
						|
								  if (!stream.readable) {
							 | 
						|
								    return cb();
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  stream.on('error', onerror);
							 | 
						|
								  stream.on('end', onend);
							 | 
						|
								
							 | 
						|
								  function onerror(err) {
							 | 
						|
								    cleanup();
							 | 
						|
								    cb(err);
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  function onend(data) {
							 | 
						|
								    cleanup();
							 | 
						|
								    cb(null, data);
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  function cleanup() {
							 | 
						|
								    stream.removeListener('error', onerror);
							 | 
						|
								    stream.removeListener('end', onend);
							 | 
						|
								  }
							 | 
						|
								};
							 |