diff --git a/lib/timers.js b/lib/timers.js index 35085e0c15..7a57d34277 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -108,8 +108,8 @@ var unenroll = exports.unenroll = function(item) { list.close(); delete lists[item._idleTimeout]; } - //if active is called later, then we want to make sure not to insert again - delete item._idleTimeout; + // if active is called later, then we want to make sure not to insert again + item._idleTimeout = -1; }; @@ -151,17 +151,18 @@ exports.setTimeout = function(callback, after) { if (after <= 0) { // Use the slow case for after == 0 timer = new Timer(); + timer._callback = callback; if (arguments.length <= 2) { timer._onTimeout = function() { - callback(); - timer.close(); + this._callback(); + this.close(); } } else { var args = Array.prototype.slice.call(arguments, 2); timer._onTimeout = function() { - callback.apply(timer, args); - timer.close(); + this._callback.apply(timer, args); + this.close(); } }