diff --git a/src/client/http_client.rs b/src/client/http_client.rs index 61d98ca7..d1bfea5f 100644 --- a/src/client/http_client.rs +++ b/src/client/http_client.rs @@ -224,16 +224,22 @@ impl HttpClient { client.request(req) .map_err(Error::from) .and_then(|resp| { - - let _status = resp.status(); // fixme: ?? - - resp.into_body() - .map_err(Error::from) - .for_each(move |chunk| { - output.write_all(&chunk)?; - Ok(()) - }) - + let status = resp.status(); + if !status.is_success() { + future::Either::A( + HttpClient::api_response(resp) + .and_then(|_| { bail!("unknown error"); }) + ) + } else { + future::Either::B( + resp.into_body() + .map_err(Error::from) + .for_each(move |chunk| { + output.write_all(&chunk)?; + Ok(()) + }) + ) + } }) }) }