diff --git a/packages/server/src/jsRunner.ts b/packages/server/src/jsRunner.ts index 543441cb8d..e2033eab33 100644 --- a/packages/server/src/jsRunner.ts +++ b/packages/server/src/jsRunner.ts @@ -12,6 +12,13 @@ const helpersSource = fs.readFileSync( "utf8" ) +class ExecutionTimeoutError extends Error { + constructor(message: string) { + super(message) + this.name = "ExecutionTimeoutError" + } +} + export function init() { setJSRunner((js: string, ctx: Record) => { return tracer.trace("runJS", {}, span => { @@ -91,7 +98,7 @@ export function init() { if (perRequestLimit) { const cpuMs = Number(jsIsolate.cpuTime) / 1e6 if (cpuMs > perRequestLimit) { - throw new Error( + throw new ExecutionTimeoutError( `CPU time limit exceeded (${cpuMs}ms > ${perRequestLimit}ms)` ) } diff --git a/packages/string-templates/src/helpers/javascript.js b/packages/string-templates/src/helpers/javascript.js index 0b63400deb..81dc69b8ec 100644 --- a/packages/string-templates/src/helpers/javascript.js +++ b/packages/string-templates/src/helpers/javascript.js @@ -56,7 +56,7 @@ module.exports.processJS = (handlebars, context) => { const res = { data: runJS(js, sandboxContext) } return `{{${LITERAL_MARKER} js_result-${JSON.stringify(res)}}}` } catch (error) { - if (error.code === "ERR_SCRIPT_EXECUTION_TIMEOUT") { + if (error.message === "Script execution timed out.") { return "Timed out while executing JS" } if (error.name === "ExecutionTimeoutError") {