summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ensureAsync.js2
-rw-r--r--lib/forever.js2
-rw-r--r--lib/internal/consoleFunc.js3
-rw-r--r--lib/memoize.js4
-rw-r--r--lib/reflect.js4
-rw-r--r--lib/timeout.js5
6 files changed, 15 insertions, 5 deletions
diff --git a/lib/ensureAsync.js b/lib/ensureAsync.js
index c60d07e..8582bba 100644
--- a/lib/ensureAsync.js
+++ b/lib/ensureAsync.js
@@ -1,5 +1,6 @@
import setImmediate from './internal/setImmediate';
import initialParams from './internal/initialParams';
+import { isAsync } from './internal/wrapAsync';
/**
* Wrap an async function and ensure it calls its callback on a later tick of
@@ -36,6 +37,7 @@ import initialParams from './internal/initialParams';
* async.mapSeries(args, async.ensureAsync(sometimesAsync), done);
*/
export default function ensureAsync(fn) {
+ if (isAsync(fn)) return fn;
return initialParams(function (args, callback) {
var sync = true;
args.push(function () {
diff --git a/lib/forever.js b/lib/forever.js
index d1f3256..66bc472 100644
--- a/lib/forever.js
+++ b/lib/forever.js
@@ -35,7 +35,7 @@ import wrapAsync from './internal/wrapAsync';
*/
export default function forever(fn, errback) {
var done = onlyOnce(errback || noop);
- var task = ensureAsync(wrapAsync(fn));
+ var task = wrapAsync(ensureAsync(fn));
function next(err) {
if (err) return done(err);
diff --git a/lib/internal/consoleFunc.js b/lib/internal/consoleFunc.js
index 6ab2f7b..35374d7 100644
--- a/lib/internal/consoleFunc.js
+++ b/lib/internal/consoleFunc.js
@@ -1,9 +1,10 @@
import arrayEach from 'lodash/_arrayEach';
import rest from './rest';
+import wrapAsync from './wrapAsync';
export default function consoleFunc(name) {
return rest(function (fn, args) {
- fn.apply(null, args.concat(rest(function (err, args) {
+ wrapAsync(fn).apply(null, args.concat(rest(function (err, args) {
if (typeof console === 'object') {
if (err) {
if (console.error) {
diff --git a/lib/memoize.js b/lib/memoize.js
index ec83620..d752d99 100644
--- a/lib/memoize.js
+++ b/lib/memoize.js
@@ -3,6 +3,7 @@ import rest from './internal/rest';
import setImmediate from './internal/setImmediate';
import initialParams from './internal/initialParams';
+import wrapAsync from './internal/wrapAsync';
function has(obj, key) {
return key in obj;
@@ -49,6 +50,7 @@ export default function memoize(fn, hasher) {
var memo = Object.create(null);
var queues = Object.create(null);
hasher = hasher || identity;
+ var _fn = wrapAsync(fn);
var memoized = initialParams(function memoized(args, callback) {
var key = hasher.apply(null, args);
if (has(memo, key)) {
@@ -59,7 +61,7 @@ export default function memoize(fn, hasher) {
queues[key].push(callback);
} else {
queues[key] = [callback];
- fn.apply(null, args.concat(rest(function(args) {
+ _fn.apply(null, args.concat(rest(function(args) {
memo[key] = args;
var q = queues[key];
delete queues[key];
diff --git a/lib/reflect.js b/lib/reflect.js
index cc8d6b6..0dbd397 100644
--- a/lib/reflect.js
+++ b/lib/reflect.js
@@ -1,5 +1,6 @@
import initialParams from './internal/initialParams';
import rest from './internal/rest';
+import wrapAsync from './internal/wrapAsync';
/**
* Wraps the function in another function that always returns data even when it
@@ -41,6 +42,7 @@ import rest from './internal/rest';
* });
*/
export default function reflect(fn) {
+ var _fn = wrapAsync(fn);
return initialParams(function reflectOn(args, reflectCallback) {
args.push(rest(function callback(err, cbArgs) {
if (err) {
@@ -60,6 +62,6 @@ export default function reflect(fn) {
}
}));
- return fn.apply(this, args);
+ return _fn.apply(this, args);
});
}
diff --git a/lib/timeout.js b/lib/timeout.js
index 93fe2e1..ad050e0 100644
--- a/lib/timeout.js
+++ b/lib/timeout.js
@@ -1,4 +1,5 @@
import initialParams from './internal/initialParams';
+import wrapAsync from './internal/wrapAsync';
/**
* Sets a time limit on an asynchronous function. If the function does not call
@@ -64,10 +65,12 @@ export default function timeout(asyncFn, milliseconds, info) {
originalCallback(error);
}
+ var fn = wrapAsync(asyncFn);
+
return initialParams(function (args, origCallback) {
originalCallback = origCallback;
// setup timer and call original function
timer = setTimeout(timeoutCallback, milliseconds);
- asyncFn.apply(null, args.concat(injectedCallback));
+ fn.apply(null, args.concat(injectedCallback));
});
}