fix(javascript): distinguish Promise and FileHandle releases (#9584)

* fix(javascript): distinguish Promise and FileHandle releases

* fix(javascript): preserve reassigned handle candidates

* test(javascript): select unisolated route fixtures explicitly

* test(javascript): distinguish package scope in route fixtures

* test(apple): separate identity and refusal fixture groups

* fix(javascript): retain uncertain releases after opaque receiver writes

---------

Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
This commit is contained in:
Nianze Wuandmorluto authored and GitHub committed 2026-11-09 21:46:51 +08:00
1 parent da3bb5aa7b
commit 759817ccbe
6 files changed
+335 -11

No files matched your search

@@ -226,6 +226,12 @@ registrations/removals and dispatch, Node timers and cancellation handles, async
`node:child_process` creation and ownership, configuration sources and direct
defaults, request construction and response consumers, parse/coercion/
validation boundaries, and built-in resource acquisition/release.
For `fs/promises.open`, a binding receiving the Promise is distinct from one
receiving the awaited FileHandle. Awaiting the Promise later does not replace
the original binding, but `h = await h` can replace it with the FileHandle.
Receiver writes can therefore retain a candidate release and its ownership
ambiguity; a still-known Promise has no direct FileHandle release. Acquisitions
remain retained, and unknown loader authority keeps its existing candidate tag.
Reassignments connect retained right-hand reads to the binding or property
write. Compound assignments also retain the previous-value input; logical
assignments keep conditional inputs as candidates. These edges describe