this.checkTaskFunctions(taskFunctions)
this.checkWorkerOptions(this.opts)
if (!this.isMain) {
- this.getMainWorker().once('message', this.handleReadyMessage.bind(this))
+ // Should be once() but Node.js on windows has a bug that prevents it from working
+ this.getMainWorker().on('message', this.handleReadyMessage.bind(this))
}
}
*
* @param message - The kill message.
*/
- protected handleKillMessage (message: MessageValue<Data>): void {
+ protected handleKillMessage (_message: MessageValue<Data>): void {
this.stopCheckActive()
if (isAsyncFunction(this.opts.killHandler)) {
(this.opts.killHandler?.() as Promise<void>)
.then(() => {
this.sendToMainWorker({ kill: 'success' })
- return null
+ return undefined
})
.catch(() => {
this.sendToMainWorker({ kill: 'failure' })
private checkMessageWorkerId (message: MessageValue<Data>): void {
if (message.workerId == null) {
throw new Error('Message worker id is not set')
- } else if (message.workerId != null && message.workerId !== this.id) {
+ } else if (message.workerId !== this.id) {
throw new Error(
`Message worker id ${message.workerId} does not match the worker id ${this.id}`
)
*/
protected run (task: Task<Data>): void {
const { name, taskId, data } = task
- const fn = this.taskFunctions.get(name ?? DEFAULT_TASK_NAME)
- if (fn == null) {
+ const taskFunctionName = name ?? DEFAULT_TASK_NAME
+ if (!this.taskFunctions.has(taskFunctionName)) {
this.sendToMainWorker({
workerError: {
name: name as string,
})
return
}
+ const fn = this.taskFunctions.get(taskFunctionName)
if (isAsyncFunction(fn)) {
this.runInAsyncScope(this.runAsync.bind(this), this, fn, task)
} else {