Finalizers aren’t destructors. The finalizer doesn’t get access to the object being GC’d, for one. But even more crucially, the spec allows the engine to call your finalizer anywhere between long after the object has been GC’d, and never.
They’re basically a nice convenience for noncritical resource cleanup. You can’t rely on them.
I mean it’s an explicit violation of that philosophy as noted in the proposal:
> For this reason, the W3C TAG Design Principles recommend against creating APIs that expose garbage collection. It's best if WeakRef objects and FinalizationRegistry objects are used as a way to avoid excess memory usage, or as a backstop against certain bugs, rather than as a normal way to clean up external resources or observe what's allocated.
They’re basically a nice convenience for noncritical resource cleanup. You can’t rely on them.