diff --git a/lib/async.js b/lib/async.js index 5da362214..71f9a5485 100644 --- a/lib/async.js +++ b/lib/async.js @@ -819,33 +819,15 @@ }; async.until = function (test, iterator, callback) { - callback = callback || noop; - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(null); - } + return async.whilst(function() { + return !test.apply(this, arguments); + }, iterator, callback); }; async.doUntil = function (iterator, test, callback) { - callback = callback || noop; - iterator(_restParam(function (err, args) { - if (err) { - return callback(err); - } - if (!test.apply(null, args)) { - async.doUntil(iterator, test, callback); - } - else { - callback(null); - } - })); + return async.doWhilst(iterator, function() { + return !test.apply(this, arguments); + }, callback); }; async.during = function (test, iterator, callback) {