From 370c27e09a63ca36f0e0aba8bef6b10f4484d70d Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Thu, 7 Oct 2021 18:39:27 +0200 Subject: feat(core): cleaner opcall stack traces (#12358) --- core/01_core.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'core/01_core.js') diff --git a/core/01_core.js b/core/01_core.js index 5af352340..e1b0529f7 100644 --- a/core/01_core.js +++ b/core/01_core.js @@ -12,6 +12,7 @@ Map, Array, ArrayPrototypeFill, + ErrorCaptureStackTrace, Promise, ObjectFreeze, ObjectFromEntries, @@ -113,12 +114,12 @@ if (res?.$err_class_name) { const className = res.$err_class_name; const errorBuilder = errorMap[className]; - if (!errorBuilder) { - throw new Error( - `Unregistered error class: "${className}"\n ${res.message}\n Classes of errors returned from ops should be registered via Deno.core.registerErrorClass().`, - ); - } - throw errorBuilder(res.message); + const err = errorBuilder ? errorBuilder(res.message) : new Error( + `Unregistered error class: "${className}"\n ${res.message}\n Classes of errors returned from ops should be registered via Deno.core.registerErrorClass().`, + ); + // Strip unwrapOpResult() and errorBuilder() calls from stack trace + ErrorCaptureStackTrace(err, unwrapOpResult); + throw err; } return res; } -- cgit v1.2.3