decouple fallback from error handling

fallback handling is differs between sync and observer responses; decouple from error handling.

In an observer, there is no return type, rather a series of `onNext()` calls.  Conflating exception decoding with fallback makes it impossible to reliably reuse the ErrorDecoder class across both usage scenarios.