pub async fn recv<R: AsyncReadExt + Unpin + Send>(
    stream: &mut R,
    cipher: (AesGcm<Aes256, U12>, Nonce<U12>)
) -> Result<(BytesMut, (AesGcm<Aes256, U12>, Nonce<U12>)), PacketError>