async fn handle_connection(socket: TcpStream) -> Result<(), NetError>
Handles each connection. Receives every packet.