FailureClassifier
Classifies the failures of subscription handlers (9.x RecoverableExceptionProvider): the failures of what the handlers call directly (a driver, a client of another system).
The runtime and the test DSL ask, for the failure and then each of its causes in turn, every classifier in this order, and the first class one gives decides: the application's (the host's beans); then the modules' found on the classpath (ServiceLoader, from a module's META-INF/services/me.ahoo.wow.spi.subscription.FailureClassifier), each knowing the raw failures of its own technology (wow-postgres a JDBC connection that failed, wow-client the JDK's network failures); then the runtime's own; then the built-in rules for the SPI's typed failures the framework's stores, transports and queries throw (me.ahoo.wow.spi.StorageUnavailableException and me.ahoo.wow.spi.transport.TransportUnavailableException systemic, me.ahoo.wow.spi.StorageBusyException backpressure, me.ahoo.wow.spi.StorageRefusedException and me.ahoo.wow.spi.transport.TransportRefusedException unrecoverable). A handler's own @Retry(recoverable, unrecoverable) comes before them all; a failure none classifies is FailureClass.RECOVERABLE.
A classifier is called on the handler's path for each failed attempt: it decides from the exception alone, quickly and without blocking.