commit 8dc7631c10b5d2a41ead056be05421df5b43d2cb
parent aa45a94f3de300930329e87b6607cbfc2d23de10
Author: MTRNord <mtrnord1@gmail.com>
Date: Sat, 5 Feb 2022 20:39:50 +0100
Properly handle 429
Diffstat:
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/helpers/matrix_client.ts b/helpers/matrix_client.ts
@@ -121,7 +121,13 @@ export default class MatrixClient {
private async fetchJson(fullUrl: string, fetchParams: any) {
const response = await fetch(fullUrl, fetchParams);
const data = await response.json();
- if (!response.ok) {
+ if (response.status === 429) {
+ const retry_after: number = data.retry_after_ms;
+ return new Promise((resolve) => {
+ setTimeout(() => { resolve(this.fetchJson(fullUrl, fetchParams)); }, retry_after);
+ });
+ }
+ if (response.status !== 200) {
if (data.errcode === "M_UNKNOWN_TOKEN") {
console.log("unknown token, logging user out:", data);
// suppressLogout so we don't recursively call fetchJson
diff --git a/helpers/storage.ts b/helpers/storage.ts
@@ -1,7 +1,7 @@
const STORAGE_VERSION = 2;
export default class Storage {
private prefix;
- private nodeLocalStorage?;
+ private nodeLocalStorage?: any;
constructor(prefix: string) {
this.prefix = prefix;
if (typeof window === "undefined") {