I’ve been trying to clean up some 2.79 and older files recently as well.
It seems deleting a scene and having objects left over is similar to deleting an object and having materials and meshes left over.
But in the case of materials and meshes they are correctly added to the “orphaned data” category and “purging” orphaned data does get rid of those.
But when you have an object with no scene, you can’t delete that object and thereby cannot delete its meshes or materials either.
You can drag an object from the objects list to a scene and it will appear in the scene in the 3d viewport (but it will not appear in the regular outliner set to View Layer mode) and you can select it in the viewport and delete it BUT IT WILL NOT actually delete the object from the file. The object will remain in the Objects list.
If you drag and drop from the objects list to the 3d viewport it will create a duplicate object so deleting that will not delete the original either.
You can drag the object from the Objects list to a Scene Collection under the Scenes list and then it will appear in both the 3d viewport AND the regular outliner. But when you delete this from the 3d viewport IT STILL DOES NOT DELETE THE OBJECT from the objects list.
You have to be sure to delete any orphan Collections from the scene you deleted first and then you’ll be able to delete the objects that were in that scene. You do that by right-clicking the collection in the outliner and … wait a minute… if I delete a collection that is not a part of any existing scenes, it seems to delete all the objects in it along with it. If I delete a collection that is a part of scene, only the collection gets deleted, the objects remain. I’m confused now. Anyway, that kind of works I guess.
update… and i just now created a scenario where orphan objects exist while there are not collections anywhere in the file … but it also seems that right clicking an orphan object and pressing delete does get rid of it.