diff --git a/test/parallel/test-worker-terminate-microtask-loop.js b/test/parallel/test-worker-terminate-microtask-loop.js new file mode 100644 index 00000000000000..b2351c5d0bb051 --- /dev/null +++ b/test/parallel/test-worker-terminate-microtask-loop.js @@ -0,0 +1,19 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { Worker } = require('worker_threads'); + +// Verify that `.terminate()` interrupts the microtask queue. + +const worker = new Worker(` +function loop() { Promise.resolve().then(loop); } loop(); +require('worker_threads').parentPort.postMessage('up'); +`, { eval: true }); + +worker.once('message', common.mustCall(() => { + setImmediate(() => worker.terminate()); +})); + +worker.once('exit', common.mustCall((code) => { + assert.strictEqual(code, 1); +}));