async fn http_proxy(
connections: &RwLock<HashMap<String, SendRequest<BoxBody<Bytes, Error>>>>,
connect_addr: String,
stream: impl AsyncRead + AsyncWrite + Send + Unpin + 'static,
proxy_request: Request<BoxBody<Bytes, Error>>,
error_logger: &ErrorLogger,
proxy_to: String,
failed_backends: Option<&RwLock<TtlCache<String, u64>>>,
) -> Result<ResponseData, Box<dyn Error + Send + Sync>>