fix(lib): return an error instead of panic if execute fails

If executing an internal task fails, a new variant of `hyper::Error` is
returned to the user, with improved messaging.

If a non-critical task fails to spawn, it no longer panics, instead just
logging a warning.

Closes #1566
This commit is contained in:
Sean McArthur
2018-06-18 16:01:01 -07:00
parent 27db8b0061
commit 482a5f589e
7 changed files with 63 additions and 30 deletions

View File

@@ -94,7 +94,7 @@ where
}
Err(Either::B((never, _))) => match never {},
});
self.executor.execute(fut);
self.executor.execute(fut)?;
State::Ready(request_tx, tx)
},
State::Ready(ref mut tx, ref conn_dropper) => {
@@ -129,7 +129,7 @@ where
drop(conn_drop_ref);
x
});
self.executor.execute(pipe);
self.executor.execute(pipe)?;
}
let fut = fut
@@ -148,7 +148,7 @@ where
}
Ok(())
});
self.executor.execute(fut);
self.executor.execute(fut)?;
continue;
},