THANK-YOU! Honestly, thank-you! I've been looking at this all week and this message had me look at the code in a slightly different way.
I knew this about Exit() / Enter() and I actually don't use these. I just create Scopes, and they do the Entering / Exiting for me. And (for the most part) the scopes are Stack based, so when they go out of (C++) scope, things get cleaned up properly. However, your message had me re-visit this, and I realized that I actually create one heap based Scope when an Isolate is created, and delete it when the Isolate is removed. This is fine, and fits the pattern, but it does mean that if you Create and Destroy two isolates, but don't nest them, then you haven't matched each Enter() with an Exit().
There was no reason to create this heap based Scope.
Thanks again!
Cheers,
Ian