summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/node/polyfills/async_hooks.ts8
-rw-r--r--tests/unit_node/async_hooks_test.ts5
2 files changed, 13 insertions, 0 deletions
diff --git a/ext/node/polyfills/async_hooks.ts b/ext/node/polyfills/async_hooks.ts
index ea0bfb944..e8960c4dc 100644
--- a/ext/node/polyfills/async_hooks.ts
+++ b/ext/node/polyfills/async_hooks.ts
@@ -10,6 +10,7 @@
import { core } from "ext:core/mod.js";
import { op_node_is_promise_rejected } from "ext:core/ops";
import { validateFunction } from "ext:deno_node/internal/validators.mjs";
+import { newAsyncId } from "ext:deno_node/internal/async_hooks.ts";
function assert(cond: boolean) {
if (!cond) throw new Error("Assertion failed");
@@ -180,9 +181,16 @@ class AsyncContextFrame {
export class AsyncResource {
frame: AsyncContextFrame;
type: string;
+ #asyncId: number;
+
constructor(type: string) {
this.type = type;
this.frame = AsyncContextFrame.current();
+ this.#asyncId = newAsyncId();
+ }
+
+ asyncId() {
+ return this.#asyncId;
}
runInAsyncScope(
diff --git a/tests/unit_node/async_hooks_test.ts b/tests/unit_node/async_hooks_test.ts
index 2ed197c2d..8d94180cf 100644
--- a/tests/unit_node/async_hooks_test.ts
+++ b/tests/unit_node/async_hooks_test.ts
@@ -125,3 +125,8 @@ Deno.test(async function bind() {
assertEquals(await deferred.promise, null);
});
+
+Deno.test(function asyncResourceStub() {
+ const resource = new AsyncResource("dbquery");
+ assert(typeof resource.asyncId() === "number");
+});