diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ensureAsync.js | 2 | ||||
-rw-r--r-- | lib/forever.js | 2 | ||||
-rw-r--r-- | lib/internal/consoleFunc.js | 3 | ||||
-rw-r--r-- | lib/memoize.js | 4 | ||||
-rw-r--r-- | lib/reflect.js | 4 | ||||
-rw-r--r-- | lib/timeout.js | 5 |
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)); }); } |