diff --git a/src/cloudflare-workers/module-worker-treblle.js b/src/cloudflare-workers/module-worker-treblle.js index 4e48698..98afed2 100644 --- a/src/cloudflare-workers/module-worker-treblle.js +++ b/src/cloudflare-workers/module-worker-treblle.js @@ -1,6 +1,35 @@ const { sendPayload } = require("./send-payload"); const { generateFieldsToMaskMap } = require("../maskFields"); +async function sendToTreblle({ + requestClone, + response, + apiKey, + projectId, + fieldsToMaskMap, + showErrors, + requestEndTime, + requestStartTime, + error, +}) { + try { + await sendPayload(requestClone, response ? response.clone() : null, { + apiKey, + projectId, + fieldsToMaskMap, + showErrors, + requestExecutionTime: requestEndTime - requestStartTime, + error, + }); + } catch (err) { + // Just catch and log Treblle error - we do not want to crash app on Treblle's failure + console.error( + "Error occurred when sending payload to Treblle, have you set appropriate headers for your content type?", + err + ); + } +} + const moduleWorkerTreblle = function ({ apiKey, projectId, @@ -25,22 +54,18 @@ const moduleWorkerTreblle = function ({ error = err; } const requestEndTime = Date.now(); - try { - await sendPayload(requestClone, response ? response.clone() : null, { - apiKey, - projectId, - fieldsToMaskMap, - showErrors, - requestExecutionTime: requestEndTime - requestStartTime, - error, - }); - } catch (err) { - // Just catch and log Treblle error - we do not want to crash app on Treblle's failure - console.error( - "Error occurred when sending payload to Treblle, have you set appropriate headers for your content type?", - err - ); - } + + context.waitUntil(sendToTreblle({ + requestClone, + response, + apiKey, + projectId, + fieldsToMaskMap, + showErrors, + requestEndTime, + requestStartTime, + error, + })) if (error) { // Rethrow application errors diff --git a/src/cloudflare-workers/send-payload.js b/src/cloudflare-workers/send-payload.js index f6e9191..8d6ded7 100644 --- a/src/cloudflare-workers/send-payload.js +++ b/src/cloudflare-workers/send-payload.js @@ -21,7 +21,7 @@ async function sendPayload( error, }); - sendPayloadToTreblleApi({ apiKey, trebllePayload, showErrors }); + await sendPayloadToTreblleApi({ apiKey, trebllePayload, showErrors }); } module.exports = { diff --git a/src/sender.js b/src/sender.js index 78a11e3..69e39b1 100644 --- a/src/sender.js +++ b/src/sender.js @@ -281,7 +281,7 @@ function sendKoaPayloadToTreblle( sendPayloadToTreblleApi({ apiKey, trebllePayload, showErrors }); } -function sendPayloadToTreblleApi({ apiKey, trebllePayload, showErrors }) { +async function sendPayloadToTreblleApi({ apiKey, trebllePayload, showErrors }) { let f; if (typeof fetch === "function") { f = fetch; @@ -294,7 +294,7 @@ function sendPayloadToTreblleApi({ apiKey, trebllePayload, showErrors }) { return; } - f("https://rocknrolla.treblle.com", { + return f("https://rocknrolla.treblle.com", { method: "POST", headers: { "Content-Type": "application/json",