perf: only check worker status when necessary
[poolifier.git] / src / pools / abstract-pool.ts
index 4d572d0ab5ba351df0d936f88901d4f25335cacf..122e9fa5c9dbbad12f7eaf01b1db4f0b38ab35e4 100644 (file)
@@ -2,8 +2,8 @@ import type {
   MessageValue,
   PromiseWorkerResponseWrapper
 } from '../utility-types'
-import { EMPTY_FUNCTION, EMPTY_OBJECT_LITERAL } from '../utils'
-import { isKillBehavior, KillBehaviors } from '../worker/worker-options'
+import { EMPTY_FUNCTION } from '../utils'
+import { KillBehaviors, isKillBehavior } from '../worker/worker-options'
 import type { PoolOptions } from './pool'
 import { PoolEmitter } from './pool'
 import type { IPoolInternal, TasksUsage } from './pool-internal'
@@ -105,7 +105,7 @@ export abstract class AbstractPool<
             this.getWorkerRunningTasks(workerCreated) === 0
           ) {
             // Kill received from the worker, means that no new tasks are submitted to that worker for a while ( > maxInactiveTime)
-            void (this.destroyWorker(workerCreated) as Promise<void>)
+            void this.destroyWorker(workerCreated)
           }
         })
         return workerCreated
@@ -208,7 +208,8 @@ export abstract class AbstractPool<
     const res = this.internalExecute(worker, this.nextMessageId)
     this.checkAndEmitBusy()
     this.sendToWorker(worker, {
-      data: data ?? (EMPTY_OBJECT_LITERAL as Data),
+      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+      data: data ?? ({} as Data),
       id: this.nextMessageId
     })
     ++this.nextMessageId
@@ -218,7 +219,11 @@ export abstract class AbstractPool<
 
   /** {@inheritDoc} */
   public async destroy (): Promise<void> {
-    await Promise.all(this.workers.map(worker => this.destroyWorker(worker)))
+    await Promise.all(
+      this.workers.map(async worker => {
+        await this.destroyWorker(worker)
+      })
+    )
   }
 
   /**