diff --git a/src/api/mod.rs b/src/api/mod.rs index d1d9b63f..d67508fb 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -243,18 +243,22 @@ impl ToTokens for Api { #[allow(unused_variables)] fn future_from(http_response: ::http::Response>) -> Box<_Future> { - #extract_headers + if http_response.status().is_success() { + #extract_headers - #deserialize_response_body - .and_then(move |response_body| { - let response = Response { - #response_init_fields - }; + #deserialize_response_body + .and_then(move |response_body| { + let response = Response { + #response_init_fields + }; - Ok(response) - }); + Ok(response) + }); - Box::new(future_response) + Box::new(future_response) + } else { + Box::new(::futures::future::err(::ruma_api::Error::StatusCode(http_response.status().clone()))) + } } }