From e20458864653b9cfebc4cbac8eef6f3b3f27d916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerhard=20St=C3=B6bich?= <18708370+Flarna@users.noreply.github.com> Date: Mon, 22 Sep 2025 19:05:37 +0200 Subject: [PATCH] test: verify tracing channel doesn't swallow unhandledRejection Add a test to verify that TracingChannel.tracePromise doesn't swallow unhandledRejection events in case no then/catch handler is set by user. --- ...annel-tracing-channel-promise-unhandled.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js b/test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js new file mode 100644 index 00000000000000..e24459774533ca --- /dev/null +++ b/test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js @@ -0,0 +1,38 @@ +'use strict'; + +const common = require('../common'); +const dc = require('diagnostics_channel'); +const assert = require('assert'); + +const channel = dc.tracingChannel('test'); + +const expectedError = new Error('test'); +const input = { foo: 'bar' }; +const thisArg = { baz: 'buz' }; + +process.on('unhandledRejection', common.mustCall((reason) => { + assert.deepStrictEqual(reason, expectedError); +})); + +function check(found) { + assert.deepStrictEqual(found, input); +} + +const handlers = { + start: common.mustCall(check), + end: common.mustCall(check), + asyncStart: common.mustCall(check), + asyncEnd: common.mustCall(check), + error: common.mustCall((found) => { + check(found); + assert.deepStrictEqual(found.error, expectedError); + }) +}; + +channel.subscribe(handlers); + +// Set no then/catch handler to verify unhandledRejection happens +channel.tracePromise(function(value) { + assert.deepStrictEqual(this, thisArg); + return Promise.reject(value); +}, input, thisArg, expectedError);