'use strict'; const common = require('../common'); const timers = require('timers'); { const interval = setInterval(common.mustCall(() => { clearTimeout(interval); }), 1).unref(); } { const interval = setInterval(common.mustCall(() => { interval.close(); }), 1).unref(); } { const interval = setInterval(common.mustCall(() => { timers.unenroll(interval); }), 1).unref(); } { const interval = setInterval(common.mustCall(() => { interval._idleTimeout = -1; }), 1).unref(); } { const interval = setInterval(common.mustCall(() => { interval._onTimeout = null; }), 1).unref(); } // Use timers' intrinsic behavior to keep this open // exactly long enough for the problem to manifest. // // See https://github.com/nodejs/node/issues/9561 // // Since this is added after it will always fire later // than the previous timeouts, unrefed or not. // // Keep the event loop alive for one timeout and then // another. Any problems will occur when the second // should be called but before it is able to be. setTimeout(common.mustCall(() => { setTimeout(common.mustCall(() => {}), 1); }), 1);