pub async fn wait_for_data<C: Encoder<Bytes, Error = Error> + Decoder<Item = BytesMut, Error = Error> + Clone + Send + Sync + 'static + TfCodec>( socket: &mut Framed<Transport, C>, ) -> Result<BytesMut, ClientError>