X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2Fabstract-worker.ts;h=7d81a88ccc816803bcdcdae4f89cb9dd56486f51;hb=52d54060bedd4627670e6181a4465293c528f5bb;hp=0646a9bfa0e423bd466ccc16efeba8b4782067c7;hpb=f65efa796405c785a1ab5e646e30fc27418a6151;p=poolifier.git diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index 0646a9bf..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, @@ -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 }) })