X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2Fabstract-worker.ts;h=7d81a88ccc816803bcdcdae4f89cb9dd56486f51;hb=49d1b48ce81c9f195830a1a886657de6f2de4ca4;hp=242c46982236357626ae50fae5f3a33d7c3f04eb;hpb=bb4e9c3d36509745767905e4577d000087a23288;p=poolifier.git diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index 242c4698..7d81a88c 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -7,7 +7,7 @@ import type { TaskPerformance, WorkerStatistics } from '../utility-types' -import { EMPTY_FUNCTION, isPlainObject } from '../utils' +import { EMPTY_FUNCTION, isAsyncFunction, isPlainObject } from '../utils' import { type KillBehavior, KillBehaviors, @@ -37,7 +37,7 @@ export abstract class AbstractWorker< Response = unknown > extends AsyncResource { /** - * Worker Id. + * Worker id. */ protected abstract id: number /** @@ -154,7 +154,7 @@ export abstract class AbstractWorker< if (message.id != null && message.data != null) { // Task message received const fn = this.getTaskFunction(message.name) - if (fn?.constructor.name === 'AsyncFunction') { + if (isAsyncFunction(fn)) { this.runInAsyncScope(this.runAsync.bind(this), this, fn, message) } else { this.runInAsyncScope(this.runSync.bind(this), this, fn, message) @@ -206,10 +206,10 @@ export abstract class AbstractWorker< * Handles an error and convert it to a string so it can be sent back to the main worker. * * @param e - The error raised by the worker. - * @returns Message of the error. + * @returns The error message. */ protected handleError (e: Error | string): string { - return e as string + return e instanceof Error ? e.message : e } /** @@ -233,13 +233,13 @@ export abstract class AbstractWorker< id: message.id }) } catch (e) { - const err = this.handleError(e as Error) + const errorMessage = this.handleError(e as Error | string) this.sendToMainWorker({ taskError: { - message: err, + workerId: this.id, + message: errorMessage, data: message.data }, - workerId: this.id, id: message.id }) } finally { @@ -270,13 +270,13 @@ export abstract class AbstractWorker< return null }) .catch(e => { - const err = this.handleError(e as Error) + const errorMessage = this.handleError(e as Error | string) this.sendToMainWorker({ taskError: { - message: err, + workerId: this.id, + message: errorMessage, data: message.data }, - workerId: this.id, id: message.id }) })