X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2Fabstract-worker.ts;h=26468aeb96ae0d5f838518e2e9308b2e31c16c0e;hb=6372ea67bc24d9249a413159f168e39881626144;hp=d41115bc390b26f63eeaa9ae4500d678cb1bd7b4;hpb=deb85c12b77faf6974551cefcd9676e62a392086;p=poolifier.git diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index d41115bc..26468aeb 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -2,6 +2,7 @@ import { AsyncResource } from 'async_hooks' import type { Worker } from 'cluster' import type { MessagePort } from 'worker_threads' import type { MessageValue } from '../utility-types' +import { EMPTY_FUNCTION } from '../utils' import type { KillBehavior, WorkerOptions } from './worker-options' import { KillBehaviors } from './worker-options' @@ -101,7 +102,7 @@ export abstract class AbstractWorker< * * @param fn The function that should be defined. */ - private checkFunctionInput (fn: (data: Data) => Response) { + private checkFunctionInput (fn: (data: Data) => Response): void { if (!fn) throw new Error('fn parameter is mandatory') } @@ -156,10 +157,10 @@ export abstract class AbstractWorker< try { const res = fn(value.data) this.sendToMainWorker({ data: res, id: value.id }) - this.lastTask = Date.now() } catch (e) { const err = this.handleError(e) this.sendToMainWorker({ error: err, id: value.id }) + } finally { this.lastTask = Date.now() } } @@ -177,13 +178,15 @@ export abstract class AbstractWorker< fn(value.data) .then(res => { this.sendToMainWorker({ data: res, id: value.id }) - this.lastTask = Date.now() return null }) .catch(e => { const err = this.handleError(e) this.sendToMainWorker({ error: err, id: value.id }) + }) + .finally(() => { this.lastTask = Date.now() }) + .catch(EMPTY_FUNCTION) } }