diff options
Diffstat (limited to 'lib/internal/main/worker_thread.js')
-rw-r--r-- | lib/internal/main/worker_thread.js | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index 90e84f204b..50a19be77d 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -166,26 +166,28 @@ function workerOnGlobalUncaughtException(error, fromPromise) { } debug(`[${threadId}] uncaught exception handled = ${handled}`); - if (!handled) { - let serialized; - try { - const { serializeError } = require('internal/error-serdes'); - serialized = serializeError(error); - } catch {} - debug(`[${threadId}] uncaught exception serialized = ${!!serialized}`); - if (serialized) - port.postMessage({ - type: ERROR_MESSAGE, - error: serialized - }); - else - port.postMessage({ type: COULD_NOT_SERIALIZE_ERROR }); - - const { clearAsyncIdStack } = require('internal/async_hooks'); - clearAsyncIdStack(); - - process.exit(); + if (handled) { + return true; } + + let serialized; + try { + const { serializeError } = require('internal/error-serdes'); + serialized = serializeError(error); + } catch {} + debug(`[${threadId}] uncaught exception serialized = ${!!serialized}`); + if (serialized) + port.postMessage({ + type: ERROR_MESSAGE, + error: serialized + }); + else + port.postMessage({ type: COULD_NOT_SERIALIZE_ERROR }); + + const { clearAsyncIdStack } = require('internal/async_hooks'); + clearAsyncIdStack(); + + process.exit(); } // Patch the global uncaught exception handler so it gets picked up by |