export async function tryCatch(promise: T | Promise) { try { const data = await promise; return [null, data] as const; } catch (error) { return [error as E, null] as const; } } export async function handleApiResponse( response: Response, fnName?: string, ) { const responseData = await response.json(); if (response.status === 401) { throw new Error("UNAUTHORIZED"); } if (response.status === 403) { throw new Error( responseData.message || "Forbidden; you do not have permission to access this resource.", ); } if (response.status === 429) { throw new Error( responseData.message || "Too many requests; please try again later.", ); } if (!response.ok) { console.log(`API Error Response from ${fnName}:`, responseData); throw new Error(responseData.message || "Something went wrong."); } return responseData as T; }