index.js 613 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**!
  2. * end-or-error - index.js
  3. *
  4. * Copyright(c) stream-utils and other contributors.
  5. * MIT Licensed
  6. *
  7. * Authors:
  8. * fengmk2 <m@fengmk2.com> (http://fengmk2.com)
  9. */
  10. 'use strict';
  11. /**
  12. * Module dependencies.
  13. */
  14. module.exports = function eoe(stream, cb) {
  15. if (!stream.readable) {
  16. return cb();
  17. }
  18. stream.on('error', onerror);
  19. stream.on('end', onend);
  20. function onerror(err) {
  21. cleanup();
  22. cb(err);
  23. }
  24. function onend(data) {
  25. cleanup();
  26. cb(null, data);
  27. }
  28. function cleanup() {
  29. stream.removeListener('error', onerror);
  30. stream.removeListener('end', onend);
  31. }
  32. };