A service combinator that sends requests to a first service, then retries processing on a second fallback service if the first service errors.
Fallback designs have a number of downsides but may be useful
in some cases. For instance, when using batch verification, the
wrapper can be used to fall back to individual verification of each item when
a batch fails to verify.
TODO: compare with similar code in linkerd.
- Future types for the
- service 🔒
- Provides fallback processing on a second service if the first service returned an error.
- A boxed type-erased
std::error::Errorthat can be sent between threads.