De-duplicate code for workers (#154)
[poolifier.git] / src / pools / thread / dynamic.ts
index c8e93850e537e0e1499b3c4ae72caa918704b6d5..9ab6bf30a7764ff3d18abd5ca99d1896cd055842 100644 (file)
@@ -55,20 +55,19 @@ export class DynamicThreadPool<
     }
 
     if (worker) {
-      // a worker is free, use it
+      // A worker is free, use it
       return worker
     } else {
       if (this.workers.length === this.max) {
         this.emitter.emit('FullPool')
         return super.chooseWorker()
       }
-      // all workers are busy create a new worker
-      const worker = this.internalNewWorker()
+      // All workers are busy, create a new worker
+      const worker = this.createAndSetupWorker()
       worker.port2?.on('message', (message: MessageValue<Data>) => {
         if (message.kill) {
           this.sendToWorker(worker, { kill: 1 })
           void this.destroyWorker(worker)
-          this.removeWorker(worker)
         }
       })
       return worker