As implemented, we sometimes get an exception on exit (usually if Gremlin is closed without deactivating), probably because the signal handler triggers Shutdown but the process exits before Shutdown can complete, causing the call to attempt to use a destroyed object.
Previously I had a daemon thread to manage this, but I want to avoid repeating that.