diff --git a/index.js b/index.js index 1affd3a..164d9d5 100644 --- a/index.js +++ b/index.js @@ -50,7 +50,9 @@ module.exports = function (stream, done) { if (typeof done === 'function') { deferred.then(function (arr) { - done(null, arr) + process.nextTick(function() { + done(null, arr) + }) }, done) } diff --git a/package.json b/package.json index 8ca0f4a..fc0faa5 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "devDependencies": { "bluebird": "^3.1.1", "istanbul": "0", - "mocha": "^2.3.3" + "mocha": "^2.3.3", + "trycatch": "^1.5.21" }, "scripts": { "test": "mocha --reporter spec --bail", diff --git a/test/index.js b/test/index.js index 05f9e6c..e5e245e 100644 --- a/test/index.js +++ b/test/index.js @@ -3,6 +3,7 @@ var assert = require('assert') var stream = require('stream') var path = require('path') var fs = require('fs') +var trycatch = require("trycatch") var toArray = require('..') @@ -60,6 +61,27 @@ describe('Stream To Array', function () { assert.equal(arr.length, 0) }) }) + + it('should not swallow errors', function (done) { + var id = {} + trycatch( + function () { + toArray(emptyStream(), function (err, arr) { + if (err) + return done(err) + + var err = new Error("foo") + err.id = id + throw err + }) + }, + function (err) { + assert(err); + assert.equal(err.id, id); + done(); + } + ) + }) }) describe('as a method', function () {