async static Task ExecuteChatUserFlow(this ClientNode node, string roomName) { string name = Guid.NewGuid().ToString(); JoinRoomResponse response = await node.SendRequestAsync <JoinRoomResponse>( new JoinRoom { UserName = name, RoomName = roomName }); if (response.RetCode == JoinRoomRetCode.NameIsTaken) { Console.WriteLine("Name is taken"); return; } Console.WriteLine("You are connected, say something or write 'exit' to quit"); bool exit = false; while (!exit) { await Task.Yield(); //client uses single threaded processing, so it's better noto block it with Console.Readline string text = Console.ReadLine(); if (text == "exit") { exit = true; } else { node.SendOneWay(new Say { Text = text }); } } }