summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/timers.js3
-rw-r--r--test/parallel/test-timers-timeout-to-interval.js12
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/timers.js b/lib/timers.js
index 7b7fb4e04f..4d41b5dc8a 100644
--- a/lib/timers.js
+++ b/lib/timers.js
@@ -442,8 +442,7 @@ function ontimeout(timer, start) {
rearm(timer, start);
}
-
-function rearm(timer, start) {
+function rearm(timer, start = TimerWrap.now()) {
// // Do not re-arm unenroll'd or closed timers.
if (timer._idleTimeout === -1) return;
diff --git a/test/parallel/test-timers-timeout-to-interval.js b/test/parallel/test-timers-timeout-to-interval.js
new file mode 100644
index 0000000000..6952f2231a
--- /dev/null
+++ b/test/parallel/test-timers-timeout-to-interval.js
@@ -0,0 +1,12 @@
+'use strict';
+const common = require('../common');
+
+// This isn't officially supported but nonetheless is something that is
+// currently possible and as such it shouldn't cause the process to crash
+
+const t = setTimeout(common.mustCall(() => {
+ if (t._repeat) {
+ clearInterval(t);
+ }
+ t._repeat = true;
+}, 2), 1);