diff --git a/lib/ext/async.js b/lib/ext/async.js index 453c112..f96eab8 100644 --- a/lib/ext/async.js +++ b/lib/ext/async.js @@ -2,11 +2,12 @@ 'use strict'; -var toArray = require('es5-ext/lib/Array/from') - , last = require('es5-ext/lib/Array/prototype/last') - , forEach = require('es5-ext/lib/Object/for-each') - , isCallable = require('es5-ext/lib/Object/is-callable') - , nextTick = require('next-tick') +var toArray = require('es5-ext/lib/Array/from') + , last = require('es5-ext/lib/Array/prototype/last') + , isArguments = require('es5-ext/lib/Function/is-arguments') + , forEach = require('es5-ext/lib/Object/for-each') + , isCallable = require('es5-ext/lib/Object/is-callable') + , nextTick = require('next-tick') , isArray = Array.isArray, slice = Array.prototype.slice , apply = Function.prototype.apply; @@ -101,7 +102,7 @@ require('../_base').ext.async = function (ignore, conf) { // If false, we don't have value yet, so we assume that intention is not // to memoize this call. After value is obtained we don't cache it but // gracefully pass to callback - if (!isArray(cache[id])) { + if (isArguments(cache[id])) { conf.emit('purgeasync', id); delete cache[id]; } diff --git a/test/ext/async.js b/test/ext/async.js index 833f121..732f36d 100644 --- a/test/ext/async.js +++ b/test/ext/async.js @@ -3,6 +3,8 @@ var memoize = require('../../lib') , nextTick = require('next-tick'); +require('../../lib/ext/dispose'); + module.exports = function () { return { "Regular": { @@ -85,7 +87,7 @@ module.exports = function () { return u; }; - mfn = memoize(fn, { async: true }); + mfn = memoize(fn, { async: true, dispose: a.never }); a(mfn(3, 7, function (err, res) { a.deep([err, res], [e, undefined], "Result #1");