Think I finally came up with a scheme for retries of scanner operations when we get a retriable failure on a "next" call. With a little bit of refactoring, managed to change the "next" call to make use of the existing single action controller rather than having a controller specific to the method call which helped to reduce some complexity and allowed reuse of the retry mechanisms already in place there.

Note, really need to go through and evaluate if I'm properly dealing with exceptions on retries and that a write on a retry that fails gets caught propagated correctly.

Also, in testing, discovered that, as I had anticipated, if an exception is caught in the netty pipeline, that is not getting propagated to the future. Still need to figure out a way to keep track fo the requests tied to a channel so that if we close one, we force outstanding requests to be retried but it's not actually that easy because if the exception is a bug in one request - which is what I had in testing - that shouldn't cause continued failure/retries of other requests on that channel. That is, an exception like that ideally wouldn't result in closing the channel, but I'm not sure if we'll be able to distinguish...