- private async startWorker() {
- return new Promise((resolve, reject) => {
- const worker = new Worker(this.workerScript);
- worker.on('message', resolve);
- worker.on('error', reject);
- worker.on('exit', (code) => {
- if (code !== 0) {
- reject(new Error(`Worker stopped with exit code ${code}`));
- }
- });
- this.workers.add(worker);
+ private async startWorker(): Promise<void> {
+ const worker = new Worker(this.workerScript);
+ worker.on(
+ 'message',
+ (
+ this.workerOptions?.messageHandler ??
+ (() => {
+ /* This is intentional */
+ })
+ ).bind(this) as MessageHandler<Worker>
+ );
+ worker.on('error', WorkerUtils.defaultErrorHandler.bind(this) as (err: Error) => void);
+ worker.on('exit', (code) => {
+ WorkerUtils.defaultExitHandler(code);
+ this.workerSet.delete(this.getWorkerSetElementByWorker(worker));