diff --git a/test/parallel/test-worker-terminate-timers.js b/test/parallel/test-worker-terminate-timers.js new file mode 100644 index 00000000000000..62360a6cdbfc18 --- /dev/null +++ b/test/parallel/test-worker-terminate-timers.js @@ -0,0 +1,18 @@ +'use strict'; +const common = require('../common'); +const { Worker } = require('worker_threads'); + +// Test that calling .terminate() during a timer callback works fine. + +for (const fn of ['setTimeout', 'setImmediate', 'setInterval']) { + const worker = new Worker(` + const { parentPort } = require('worker_threads'); + ${fn}(() => { + require('worker_threads').parentPort.postMessage({}); + while (true); + });`, { eval: true }); + + worker.on('message', common.mustCallAtLeast(() => { + worker.terminate(); + })); +}