diff --git a/lib/timers.js b/lib/timers.js index ad00ede974895f..7d3e7b5030956e 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -353,13 +353,14 @@ exports.unenroll = util.deprecate(unenroll, // This function does not start the timer, see `active()`. // Using existing objects as timers slightly reduces object overhead. function enroll(item, msecs) { - item._idleTimeout = validateTimerDuration(msecs); + msecs = validateTimerDuration(msecs); // if this item was already in a list somewhere // then we should unenroll it from that if (item._idleNext) unenroll(item); L.init(item); + item._idleTimeout = msecs; } exports.enroll = util.deprecate(enroll, diff --git a/test/parallel/test-timers-enroll-second-time.js b/test/parallel/test-timers-enroll-second-time.js new file mode 100644 index 00000000000000..a914e6c4a18a98 --- /dev/null +++ b/test/parallel/test-timers-enroll-second-time.js @@ -0,0 +1,16 @@ +'use strict'; + +const common = require('../common'); + +const assert = require('assert'); +const timers = require('timers'); + +const enrollObj = { + _onTimeout: common.mustCall(), +}; + +timers.enroll(enrollObj, 1); +assert.strictEqual(enrollObj._idleTimeout, 1); +timers.enroll(enrollObj, 10); +assert.strictEqual(enrollObj._idleTimeout, 10); +timers.active(enrollObj);