Thanks for the refactoring, Nicholas! The patch looks pretty good to me. Just two minor comments:
- We can use Collections.singletonList instead of Arrays.asList in the following code.
117 final Iterable<Exception> exceptions = e instanceof MultiException ?
118 ((MultiException) e).getExceptions().values() : Arrays.asList(e);
- The follow java comment can be moved into the failover method.
+1 after addressing the comments.