From bae17a9b9a99710917f3b4fb9081d63a80a06acf Mon Sep 17 00:00:00 2001 From: Aaro Varis Date: Sun, 29 Sep 2024 18:41:37 +0300 Subject: [PATCH] Refactor error handling and response handling in BatchHTTP module --- BatchHTTP.lua | 7 ++++++- index.js | 24 +++++++++++++++--------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/BatchHTTP.lua b/BatchHTTP.lua index 3f2b652..033e632 100644 --- a/BatchHTTP.lua +++ b/BatchHTTP.lua @@ -91,7 +91,12 @@ function DoRequest(request) end end - print("[BatchHTTP] got response",id) + if response.error then + warn('[BatchHTTP] request '..id..' errored "'..response.error.message..'"') + else + print("[BatchHTTP] got response "+response.status,id) + end + return response.data end diff --git a/index.js b/index.js index 831af5a..a53545f 100644 --- a/index.js +++ b/index.js @@ -29,9 +29,11 @@ async function main() { } responses[instanceId].push({ id: response.id, - data: response.data + data: response.data, + error: response.error, + status: response.status }) - console.log(`Response registered for instance ${instanceId}`); + //console.log(`Response registered for instance ${instanceId}`); setTimeout(() => { if (!responses[instanceId]) { return; @@ -41,7 +43,7 @@ async function main() { }, 60_000); } - async function DoRequest(instanceId, requestObj) { + async function DoRequest(instanceId, requestObj, retriesLeft = 3) { const requestParams = requestObj.request || {}; const method = requestParams.Method?.toLowerCase() || 'get'; const url = requestParams.Url || ''; @@ -70,16 +72,20 @@ async function main() { data: response.data }); } catch (error) { - if (RETRY_ERROR_CODES.includes(error.response?.status)) { - console.log(`Retrying request ${requestObj.id} for instance ${instanceId}`); - SetTimeout(() => { - DoRequest(instanceId, requestObj); - }, 5000); + const statusCode = error.response?.status; + if (RETRY_ERROR_CODES.includes(statusCode) && retriesLeft > 0) { + console.log(`Retrying request ${requestObj.id} for instance ${instanceId}, HTTP ${statusCode}`); + setTimeout(() => { + DoRequest(instanceId, requestObj, retriesLeft - 1); + }, 1000); } else { RegisterResponse(instanceId, { id: requestObj.id, data: error.response?.data, - error: "yep there was an error" + status: statusCode, + error: { + message: error.message || 'Unknown error', + } }); } }