In Retrofit we used a custom CallAdapter to wrap every response or error in a NetworkResponse sealed class, instead of relying on exceptions, after reading https://elizarov.medium.com/kotlin-and-exceptions-8062f589d07 by @elizarov.
But in Ktor client, every example of error handling (including in the documentation https://ktor.io/docs/response-validation.html#expect-success) uses Exceptions instead of Sealed classes.
Should we catch the waves and throw ourselves back to exception handling or should we try to implement our own feature to wrap responses in a sealed class?