private async Task ListenForRemoteConnection()
        {
            bool listening = true;

            Console.WriteLine("STATUS: Listening for a connection");

            while (listening)
            {
                Receiver = await NetworkService.AcceptConnectionAsync(Listener);

                if (Receiver != null)
                {
                    Console.WriteLine($"RESULT: Connection request from {((IPEndPoint) Receiver.RemoteEndPoint).Address} accepted");
                }
                else
                {
                    Console.WriteLine("RESULT: Accept of connection failed");
                    Receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                }

                if (Receiver != null && Receiver.Connected)
                {
                    Console.WriteLine("STATUS: Waiting to receive request data");
                    NetworkData networkData = await NetworkService.ReceiveDataAsync(Receiver);

                    if (networkData != null && networkData.DataType == NetworkDataType.Request)
                    {
                        Console.WriteLine($"RESULT: Received request data from {networkData.User.UserName}");
                        RemoteUser = networkData.User;
                        listening  = false;
                    }
                    else
                    {
                        Console.WriteLine("RESULT: Receive of request data failed");
                        Receiver.Shutdown(SocketShutdown.Both);
                    }

                    if (!Sender.Connected)
                    {
                        await ConnectToRemoteUser(RemoteUser.IpAddress, RemoteUser.PortNumber);

                        State = ConnectionState.Responding;
                    }
                    else
                    {
                        State = ConnectionState.Waiting;
                    }
                }
                else
                {
                    Console.WriteLine("STATUS: Listening for connection canceled");
                    listening = false;
                }
            }
        }