Можешь объяснить, что такое `FinalizationRegistry` в JavaScript, включая его назначение, как он работает с `WeakRef`, и его ограничения? — ДейлиПреп