internal async Task RunAsync() { var sw = System.Diagnostics.Stopwatch.StartNew(); while (Connected.Count == 0) { await Task.Delay(10); if (sw.Elapsed.TotalSeconds > 10) { Assert.Fail("Client Took Too Long To Connect"); break; } } await Task.Delay(1000); var singleClient = Connected.First(); singleClient.SendMessage("Hey?"); await Task.Delay(100); singleClient.SendMessage("Anyone?"); await Task.Delay(100); singleClient.SendMessage("What's this?"); await Task.Delay(100); singleClient.SendMessage("What's your status?"); await Task.Delay(10); singleClient.SendMessage("Greetings!!??"); await Task.Delay(100); singleClient.SendMessage("Hello Client!?"); sw = System.Diagnostics.Stopwatch.StartNew(); Console.WriteLine($"Socket: Listening"); while (Connected.Contains(singleClient)) { Receive(); await Task.Delay(100); if (sw.Elapsed.TotalSeconds > 5) { Console.WriteLine("Socket: This all took too long - throwing an exception"); Assert.Fail("Socket Took Too Long"); break; } } Console.WriteLine($"Socket: Closing connection because {Connected.Count()} Connected"); await Task.Delay(1000); Close(); }