Add retries back to PluralKit API

This commit is contained in:
Cadence Ember
2026-09-11 12:51:29 +12:00
parent 7faa8a3c9e
commit 5e9f3cd532
+10 -2
View File
@@ -3,6 +3,7 @@
const assert = require("assert").strict const assert = require("assert").strict
const {reg} = require("../../matrix/read-registration") const {reg} = require("../../matrix/read-registration")
const Ty = require("../../types") const Ty = require("../../types")
const {scheduler} = require("timers/promises")
const passthrough = require("../../passthrough") const passthrough = require("../../passthrough")
const {sync, db, select, from} = passthrough const {sync, db, select, from} = passthrough
@@ -14,14 +15,21 @@ const file = sync.require("../../matrix/file")
const registerUser = sync.require("./register-user") const registerUser = sync.require("./register-user")
/** @returns {Promise<Ty.PkMessage>} */ /** @returns {Promise<Ty.PkMessage>} */
async function fetchMessage(messageID) { async function fetchMessage(messageID, attempt = 1) {
try { try {
var res = await fetch(`https://api.pluralkit.me/v2/messages/${messageID}`) var res = await fetch(`https://api.pluralkit.me/v2/messages/${messageID}`)
} catch (networkError) { } catch (networkError) {
// Network issue, raise a more readable message // Network issue, raise a more readable message
throw new Error(`Failed to connect to PK API: ${networkError.toString()}`) throw new Error(`Failed to connect to PK API: ${networkError.toString()}`)
} }
if (!res.ok) throw new Error(`PK API returned an error: ${await res.text()}`) if (!res.ok) {
if (attempt < 2) {
await scheduler.wait(5000)
return fetchMessage(messageID, attempt + 1)
} else {
throw new Error(`PK API returned an error: ${await res.text()}`)
}
}
/** @type {any} */ /** @type {any} */
const root = await res.json() const root = await res.json()
if (!root.member) throw new Error(`PK API didn't return member data: ${JSON.stringify(root)}`) if (!root.member) throw new Error(`PK API didn't return member data: ${JSON.stringify(root)}`)