import { randomUUID } from 'node:crypto'
import { performance } from 'node:perf_hooks'
import type { TransferListItem } from 'node:worker_threads'
+import { type EventEmitter, EventEmitterAsyncResource } from 'node:events'
import type {
MessageValue,
PromiseResponseWrapper,
import type { TaskFunction } from '../worker/task-functions'
import {
type IPool,
- PoolEmitter,
PoolEvents,
type PoolInfo,
type PoolOptions,
public readonly workerNodes: Array<IWorkerNode<Worker, Data>> = []
/** @inheritDoc */
- public emitter?: PoolEmitter
+ public emitter?: EventEmitter | EventEmitterAsyncResource
/**
* The task execution response promise map:
}
private initializeEventEmitter (): void {
- this.emitter = new PoolEmitter({
+ this.emitter = new EventEmitterAsyncResource({
name: `poolifier:${this.type}-${this.worker}-pool`
})
}
})
)
this.emitter?.emit(PoolEvents.destroy, this.info)
- this.emitter?.emitDestroy()
+ if (this.emitter instanceof EventEmitterAsyncResource) {
+ this.emitter?.emitDestroy()
+ }
this.started = false
}