async fn drain<Pipe>(pipe: Pipe, limit: u64) -> Result<Vec<u8>, Error>where Pipe: AsyncRead + Unpin + Send,