public override void Disconnect()
{
base.Disconnect();
ControllingSocket = null;
Unity.UnityEventObject.onDestroy -= SkipResetOnDestroy;
if (Threading.ThreadManagement.IsMainThread)
Destroy(gameObject);
else
Unity.MainThreadManager.Run(() => { Destroy(gameObject); }); // JM: make sure this is run on main thread
instance = null;
}