diff options
Diffstat (limited to 'node_modules/async/internal/createTester.js')
-rw-r--r-- | node_modules/async/internal/createTester.js | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/node_modules/async/internal/createTester.js b/node_modules/async/internal/createTester.js index 4ec5db360..5330c38a3 100644 --- a/node_modules/async/internal/createTester.js +++ b/node_modules/async/internal/createTester.js @@ -9,32 +9,31 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); +var _breakLoop = require('./breakLoop'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _createTester(eachfn, check, getResult) { return function (arr, limit, iteratee, cb) { - function done(err) { + function done() { if (cb) { - if (err) { - cb(err); - } else { - cb(null, getResult(false)); - } + cb(null, getResult(false)); } } function wrappedIteratee(x, _, callback) { if (!cb) return callback(); iteratee(x, function (err, v) { - if (cb) { - if (err) { - cb(err); - cb = iteratee = false; - } else if (check(v)) { - cb(null, getResult(true, x)); - cb = iteratee = false; - } + // Check cb as another iteratee may have resolved with a + // value or error since we started this iteratee + if (cb && (err || check(v))) { + if (err) cb(err);else cb(err, getResult(true, x)); + cb = iteratee = false; + callback(err, _breakLoop2.default); + } else { + callback(); } - callback(); }); } if (arguments.length > 3) { |