throw if async callback is executed twice.

This commit is contained in:
Christopher Jeffrey 2016-03-06 02:15:56 -08:00
parent 99f927665a
commit 786aed49dd

View File

@ -1426,8 +1426,8 @@ utils.ccmp = function(a, b) {
var res = 0;
var i;
assert(Buffer.isBuffer(a));
assert(Buffer.isBuffer(b));
utils.assert(Buffer.isBuffer(a));
utils.assert(Buffer.isBuffer(b));
if (a.length !== b.length)
return false;
@ -1448,6 +1448,7 @@ utils.forRange = function forRange(from, to, iter, callback) {
return callback();
function next(err) {
utils.assert(pending > 0);
if (err)
error = err;
if (!--pending)
@ -1468,6 +1469,7 @@ utils.forEach = function forEach(arr, iter, callback) {
return callback();
function next(err) {
utils.assert(pending > 0);
if (err)
error = err;
if (!--pending)
@ -1480,13 +1482,20 @@ utils.forEach = function forEach(arr, iter, callback) {
};
utils.forRangeSerial = function forRangeSerial(from, to, iter, callback) {
var called = false;
callback = utils.asyncify(callback);
(function next(err) {
if (err)
utils.assert(!called);
if (err) {
called = true;
return callback(err);
if (from >= to)
}
if (from >= to) {
called = true;
return callback();
}
from++;
utils.nextTick(function() {
iter(from - 1, next, from - 1);
@ -1496,15 +1505,21 @@ utils.forRangeSerial = function forRangeSerial(from, to, iter, callback) {
utils.forEachSerial = function forEachSerial(arr, iter, callback) {
var i = 0;
var called = false;
callback = utils.asyncify(callback);
(function next(err) {
var item;
if (err)
utils.assert(!called);
if (err) {
called = true;
return callback(err);
if (i >= arr.length)
}
if (i >= arr.length) {
called = true;
return callback();
}
item = arr[i];
i++;
utils.nextTick(function() {
@ -1524,6 +1539,7 @@ utils.every = function every(arr, iter, callback) {
return callback(null, result);
function next(err, res) {
utils.assert(pending > 0);
if (err)
error = err;
if (!res)
@ -1542,17 +1558,25 @@ utils.every = function every(arr, iter, callback) {
utils.everySerial = function everySerial(arr, iter, callback) {
var i = 0;
var called = false;
callback = utils.asyncify(callback);
(function next(err, res) {
var item;
if (err)
utils.assert(!called);
if (err) {
called = true;
return callback(err);
if (!result)
}
if (!result) {
called = true;
return callback(null, false);
if (i >= arr.length)
}
if (i >= arr.length) {
called = true;
return callback(null, true);
}
item = arr[i];
i++;
utils.nextTick(function() {