| export function getUpstreamStatus(error) { |
| return error?.response?.status || error?.status || error?.statusCode || 500; |
| } |
|
|
| async function readReadableStreamToString(readable) { |
| const chunks = []; |
| for await (const chunk of readable) { |
| chunks.push(chunk); |
| } |
| return Buffer.concat(chunks).toString(); |
| } |
|
|
| export async function readUpstreamErrorBody(error) { |
| if (!error) return ''; |
|
|
| const data = error?.response?.data; |
|
|
| |
| if (data?.readable) { |
| try { |
| return await readReadableStreamToString(data); |
| } catch { |
| |
| } |
| } |
|
|
| if (typeof data === 'object' && data !== null) { |
| try { |
| return JSON.stringify(data, null, 2); |
| } catch { |
| return String(data); |
| } |
| } |
|
|
| if (data !== undefined && data !== null) return String(data); |
| if (error.message) return String(error.message); |
| return String(error); |
| } |
|
|
| export function isCallerDoesNotHavePermission(errorBody) { |
| try { |
| return JSON.stringify(errorBody).includes('The caller does not'); |
| } catch { |
| return String(errorBody).includes('The caller does not'); |
| } |
| } |
|
|