- });
- worker.on(
- 'online',
- this.workerOptions?.poolOptions?.onlineHandler ?? WorkerConstants.EMPTY_FUNCTION
- );
- worker.on(
- 'exit',
- this.workerOptions?.poolOptions?.exitHandler ?? WorkerConstants.EMPTY_FUNCTION
- );
- worker.once('exit', () => this.workerSet.delete(this.getWorkerSetElementByWorker(worker)));
- const workerSetElement: WorkerSetElement = { worker, numberOfWorkerElements: 0 };
- this.workerSet.add(workerSetElement);
- return workerSetElement;
+ worker.unref()
+ worker.terminate().catch((error: unknown) => this.emitter?.emit(WorkerSetEvents.error, error))
+ })
+ worker.on('online', this.workerOptions.poolOptions?.onlineHandler ?? EMPTY_FUNCTION)
+ worker.on('exit', this.workerOptions.poolOptions?.exitHandler ?? EMPTY_FUNCTION)
+ worker.once('exit', () => {
+ this.removeWorkerSetElement(this.getWorkerSetElementByWorker(worker))
+ })
+ const workerSetElement: WorkerSetElement = { worker, numberOfWorkerElements: 0 }
+ this.workerSet.add(workerSetElement)
+ this.workerStartup = false
+ return workerSetElement
+ }
+
+ private removeWorkerSetElement (workerSetElement: WorkerSetElement | undefined): void {
+ if (workerSetElement == null) {
+ return
+ }
+ this.workerSet.delete(workerSetElement)