From 5b2f689f085fea8ff52f296c94072a1fb29dd054 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Wed, 20 Mar 2024 11:19:53 +0530 Subject: fix(ext/node): FsWatcher ref and unref (#22987) Fixes https://github.com/denoland/deno/issues/22973 --------- Co-authored-by: Satya Rohith --- runtime/js/40_fs_events.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'runtime/js') diff --git a/runtime/js/40_fs_events.js b/runtime/js/40_fs_events.js index 9592b9f7d..3493ddcd9 100644 --- a/runtime/js/40_fs_events.js +++ b/runtime/js/40_fs_events.js @@ -17,6 +17,7 @@ import { SymbolDispose } from "ext:deno_web/00_infra.js"; class FsWatcher { #rid = 0; + #promise; constructor(paths, options) { const { recursive } = options; @@ -32,9 +33,18 @@ class FsWatcher { return this.#rid; } + unref() { + core.unrefOpPromise(this.#promise); + } + + ref() { + core.refOpPromise(this.#promise); + } + async next() { try { - const value = await op_fs_events_poll(this.#rid); + this.#promise = op_fs_events_poll(this.#rid); + const value = await this.#promise; return value ? { value, done: false } : { value: undefined, done: true }; } catch (error) { if (ObjectPrototypeIsPrototypeOf(BadResourcePrototype, error)) { -- cgit v1.2.3