mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 15:35:41 +00:00

This PR makes a change to the Worker.terminate() when called if the kHandler is null. Before this pull request it was returning undefined, but the API is expecting a promise. With the changes in this PR if terminate is called a Promise.resolve() is returned, unless a callback is passed in which case the old behavior stays (returns undefined). PR-URL: https://github.com/nodejs/node/pull/28370 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
28 lines
780 B
JavaScript
28 lines
780 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const { Worker } = require('worker_threads');
|
|
|
|
// Test that calling worker.terminate() if kHandler is null should return an
|
|
// empty promise that resolves to undefined, even when a callback is passed
|
|
|
|
const worker = new Worker(`
|
|
const { parentPort } = require('worker_threads');
|
|
parentPort.postMessage({ hello: 'world' });
|
|
`, { eval: true });
|
|
|
|
process.once('beforeExit', common.mustCall(() => {
|
|
console.log('beforeExit');
|
|
worker.ref();
|
|
}));
|
|
|
|
worker.on('exit', common.mustCall(() => {
|
|
console.log('exit');
|
|
worker.terminate().then((res) => assert.strictEqual(res, undefined));
|
|
worker.terminate(() => null).then(
|
|
(res) => assert.strictEqual(res, undefined)
|
|
);
|
|
}));
|
|
|
|
worker.unref();
|