Redesign Error type
- The `Error`'s kind is a now a set of variants depending on the context of when an error could occur. - If another error was the cause, it is now always the `source`. Along with the `is_*` methods, this should help in understanding *when* a certain error occurred. For example, an error setting the TLS certificates will return a builder error, with the TLS error as the source. This should help differentiate from a TLS error that happens when connecting to a server. It also makes the internal code less dependent on all the exact dependencies that can be enabled or disabled.
This commit is contained in:
@@ -550,7 +550,7 @@ impl ClientHandle {
|
||||
.spawn(move || {
|
||||
use tokio::runtime::current_thread::Runtime;
|
||||
|
||||
let mut rt = match Runtime::new().map_err(crate::error::from) {
|
||||
let mut rt = match Runtime::new().map_err(crate::error::builder) {
|
||||
Err(e) => {
|
||||
if let Err(e) = spawn_tx.send(Err(e)) {
|
||||
error!("Failed to communicate runtime creation failure: {:?}", e);
|
||||
@@ -587,7 +587,7 @@ impl ClientHandle {
|
||||
|
||||
rt.block_on(f)
|
||||
})
|
||||
.map_err(crate::error::from)?;
|
||||
.map_err(crate::error::builder)?;
|
||||
|
||||
// Wait for the runtime thread to start up...
|
||||
match wait::timeout(spawn_rx, None) {
|
||||
@@ -639,8 +639,8 @@ impl ClientHandle {
|
||||
self.timeout.0,
|
||||
KeepCoreThreadAlive(Some(self.inner.clone())),
|
||||
)),
|
||||
Err(wait::Waited::TimedOut) => Err(crate::error::timedout(Some(url))),
|
||||
Err(wait::Waited::Executor(err)) => Err(crate::error::from(err).with_url(url)),
|
||||
Err(wait::Waited::TimedOut(e)) => Err(crate::error::request(e).with_url(url)),
|
||||
Err(wait::Waited::Executor(err)) => Err(crate::error::request(err).with_url(url)),
|
||||
Err(wait::Waited::Inner(err)) => Err(err.with_url(url)),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user