Skip to content

Commit 121ea13

Browse files
Uzlopakmarco-ippolito
authored andcommittedJun 17, 2024
process: improve event-loop
PR-URL: #52108 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz.nizipli@sentry.io> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
1 parent 2246d4f commit 121ea13

6 files changed

+359
-190
lines changed
 

‎lib/internal/process/promises.js

+324-187
Large diffs are not rendered by default.

‎test/fixtures/errors/unhandled_promise_trace_warnings.snapshot

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
at *
1010
at *
1111
at *
12+
at *
1213
(node:*) Error: This was rejected
1314
at *
1415
at *

‎test/parallel/test-promise-unhandled-default.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ process.on('uncaughtException', common.mustCall((err, origin) => {
4646
counter.dec();
4747
assert.strictEqual(origin, 'unhandledRejection', err);
4848
const knownError = errors.shift();
49-
assert.deepStrictEqual(err, knownError);
49+
assert.strictEqual(err.name, knownError.name);
50+
assert.strictEqual(err.toString(), knownError.toString());
51+
assert.strictEqual(err.code, knownError.code);
5052
// Check if the errors are reference equal.
5153
assert(identical.shift() ? err === knownError : err !== knownError);
5254
}, 2));

‎test/parallel/test-promise-unhandled-error.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ process.on('uncaughtException', common.mustCall((err, origin) => {
4646
counter.dec();
4747
assert.strictEqual(origin, 'unhandledRejection', err);
4848
const knownError = errors.shift();
49-
assert.deepStrictEqual(err, knownError);
49+
assert.strictEqual(err.message, knownError.message);
50+
assert.strictEqual(err.code, knownError.code);
5051
// Check if the errors are reference equal.
5152
assert(identical.shift() ? err === knownError : err !== knownError);
5253
}, 2));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert');
5+
6+
function delay(time) {
7+
return new Promise((resolve) => {
8+
setTimeout(resolve, time);
9+
});
10+
}
11+
12+
async function test() {
13+
for (let i = 0; i < 100000; i++) {
14+
await new Promise((resolve, reject) => {
15+
reject('value');
16+
})
17+
.then(() => { }, () => { });
18+
}
19+
20+
const time0 = Date.now();
21+
await delay(0);
22+
23+
const diff = Date.now() - time0;
24+
assert.ok(Date.now() - time0 < 500, `Expected less than 500ms, got ${diff}ms`);
25+
}
26+
27+
test();

‎test/parallel/test-promise-unhandled-throw.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ process.on('uncaughtException', common.mustCall((err, origin) => {
4747
counter.dec();
4848
assert.strictEqual(origin, 'unhandledRejection', err);
4949
const knownError = errors.shift();
50-
assert.deepStrictEqual(err, knownError);
50+
assert.strictEqual(err.message, knownError.message);
51+
assert.strictEqual(err.code, knownError.code);
5152
// Check if the errors are reference equal.
5253
assert(identical.shift() ? err === knownError : err !== knownError);
5354
}, 2));

0 commit comments

Comments
 (0)
Please sign in to comment.