private IEnumerator processMessagesCoroutine() { while (true) { if (mt.TriggerForceTeardownAfterDelay) { CoroutineRunner.Start(forceTeardownAfterDelay(mt.smartFoxRef, 5), this, "forceTeardownAfterDelay"); mt.TriggerForceTeardownAfterDelay = false; } if (mt.TriggerInitCrypto) { CoroutineRunner.Start(mt.InitCrypto(), this, "InitCrypto"); mt.TriggerInitCrypto = false; } if (mt.TryGetServerTimeUpdate(out var serverTime)) { lastServerTime = serverTime; clientTimer.Reset(); clientTimer.Start(); } try { processEvents(); } catch (Exception ex) { Log.LogError(this, "Catching error in the smartfox event processing loop, so networking doesn't stop: " + ex.Message); Log.LogException(this, ex); } yield return(null); } }