In Godot 4, I'm trying to spawn particles and detach them from the object so that they continue even after queue_free() but this isn't working.

I don't want to wait around for the particles to finish before I remove the object. Do I need to just wait for one frame to pass or something? Wondering what to put maybe an await?
What happens with the code above is the queue_free() also removes the particles before they are done.
I thought set_as_top_level would reparent the object to the scene root. Maybe it does but I need to wait a frame?
I tried this but it doesn't help:
i guess i could make a singleton that just looks for signals and triggers all the particles but that feels wrong - want my particles in the object that spawns them if possible.