fix: refine possible null exception fix at task response handling
[poolifier.git] / src / pools / utils.ts
index 11c30ad1da9b5cf875be570116fdf240cb0af89b..5e21c38c0af657dab99aca255e80f0e39888b6a6 100644 (file)
@@ -10,6 +10,7 @@ import {
 import type { TasksQueueOptions } from './pool'
 import {
   type IWorker,
+  type IWorkerNode,
   type MeasurementStatistics,
   type WorkerNodeOptions,
   type WorkerType,
@@ -119,7 +120,7 @@ export const checkWorkerNodeArguments = (
       'Cannot construct a worker node without worker node options'
     )
   }
-  if (opts != null && !isPlainObject(opts)) {
+  if (!isPlainObject(opts)) {
     throw new TypeError(
       'Cannot construct a worker node with invalid options: must be a plain object'
     )
@@ -203,3 +204,26 @@ export const createWorker = <Worker extends IWorker>(
       throw new Error(`Unknown worker type '${type}'`)
   }
 }
+
+export const waitWorkerNodeEvents = async <
+  Worker extends IWorker,
+  Data = unknown
+>(
+  workerNode: IWorkerNode<Worker, Data>,
+  workerNodeEvent: string,
+  numberOfEventsToWait: number
+): Promise<number> => {
+  return await new Promise<number>(resolve => {
+    let events = 0
+    if (numberOfEventsToWait === 0) {
+      resolve(events)
+      return
+    }
+    workerNode.on(workerNodeEvent, () => {
+      ++events
+      if (events === numberOfEventsToWait) {
+        resolve(events)
+      }
+    })
+  })
+}