IEnumerator TestTableRefAsync() { Terminal.LogImportant("TestTableRefAsync"); if (Context != null) { if (Context.IsConnected) { Context.Disconnect(); } yield return(1); } // Construct Context = new StorageController(AuthKey); // Wait for Connect yield return(StartCoroutine(Context.WaitForConnect())); // get score table var tableTask = Context.Table <Score>(); yield return(StartCoroutine(tableTask.WaitRoutine())); tableTask.ThrowIfFaulted(); var table = tableTask.Result; //Wire listeners int callbacks = 0; table.On(StorageEventType.DELETE, response => { Terminal.Log("DELETE " + response.Val <Score>().UserName); callbacks++; }); table.On(StorageEventType.PUT, response => { Terminal.Log("PUT " + response.Val <Score>().UserName); callbacks++; }); table.On(StorageEventType.UPDATE, response => { Terminal.Log("UPDATE " + response.Val <Score>().UserName); callbacks++; }); //test var score = new Score { Points = Strings.RandomNumber(100, 10000), Points2 = Strings.RandomNumber(100, 10000), UserName = Strings.RandomString(10), }; var tresult1 = Context.Repository.Create(score); yield return(StartCoroutine(tresult1.WaitRoutine())); tresult1.ThrowIfFaulted(); var tresult2 = Context.Repository.Update(score); yield return(StartCoroutine(tresult2.WaitRoutine())); tresult2.ThrowIfFaulted(); var tresult3 = Context.Repository.Delete(score); yield return(StartCoroutine(tresult3.WaitRoutine())); tresult3.ThrowIfFaulted(); Terminal.Log("Updates posted. Waiting for response"); for (int i = 0; i < 10; i++) { if (callbacks >= 3) { break; } yield return(new WaitForSeconds(2.5f)); Terminal.Log("."); } if (callbacks < 3) { Debug.LogWarning("Failed to get all update messages. This sometimes happens, please try again."); } else { Terminal.LogSuccess("Test Success"); } }