24 lines
650 B
TypeScript
24 lines
650 B
TypeScript
|
// Copyright 2022 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
export type RateLimitedErrorPayloadType = Readonly<{
|
||
|
// eslint-disable-next-line camelcase
|
||
|
retry_after?: number;
|
||
|
}>;
|
||
|
|
||
|
export class RateLimitedError extends Error {
|
||
|
public readonly retryAfterSecs: number;
|
||
|
|
||
|
// eslint-disable-next-line camelcase
|
||
|
constructor({ retry_after }: RateLimitedErrorPayloadType) {
|
||
|
super(
|
||
|
'RateLimitedError: got 4008 close code from CDSI, ' +
|
||
|
// eslint-disable-next-line camelcase
|
||
|
`retry_after=${retry_after}`
|
||
|
);
|
||
|
|
||
|
// eslint-disable-next-line camelcase
|
||
|
this.retryAfterSecs = retry_after ?? 0;
|
||
|
}
|
||
|
}
|