Sounds like you are best off refreshing the page to be honest.
The app.root node shouldn’t be destroyed. The scene’s root node is actually a child of app.root. That graph node should be destroyed instead.
In terms of leftover event listeners, please remember that anything that listens to an events needs to be responsible for removing the event too when it is destroyed. For pc.scripts, that means listening for the destroy event and removing the listeners in the callback.