22 lines
582 B
TypeScript
22 lines
582 B
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { reallyJsonStringify } from '../util/reallyJsonStringify';
|
|
|
|
/**
|
|
* An error that wraps job errors.
|
|
*
|
|
* Should not be instantiated directly, except by `JobQueue`.
|
|
*/
|
|
export class JobError extends Error {
|
|
constructor(public readonly lastErrorThrownByJob: unknown) {
|
|
super(`Job failed. Last error: ${formatError(lastErrorThrownByJob)}`);
|
|
}
|
|
}
|
|
|
|
function formatError(err: unknown): string {
|
|
if (err instanceof Error) {
|
|
return err.message;
|
|
}
|
|
return reallyJsonStringify(err);
|
|
}
|