1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const { Worker, workerData } = require('worker_threads'); 5 6// Test that 'exit' events for nested Workers are not received when a Worker 7// terminates itself through process.exit(). 8 9if (workerData === null) { 10 const nestedWorkerExitCounter = new Int32Array(new SharedArrayBuffer(4)); 11 const w = new Worker(__filename, { workerData: nestedWorkerExitCounter }); 12 w.on('exit', common.mustCall(() => { 13 assert.strictEqual(nestedWorkerExitCounter[0], 0); 14 })); 15} else { 16 const nestedWorker = new Worker('setInterval(() => {}, 100)', { eval: true }); 17 // The counter should never be increased here. 18 nestedWorker.on('exit', () => workerData[0]++); 19 nestedWorker.on('online', () => process.exit()); 20} 21