sdkErrorInterceptor function

Interceptor sdkErrorInterceptor()

Builds an Interceptor that wraps every thrown ConnectException in an SdkError. Place this OUTERMOST in the interceptor chain so it sees the final error after retry, breaker, and every other interceptor have run:

SdkError -> OTel -> Breaker -> Idempotency -> Retry -> Auth

Implementation

Interceptor sdkErrorInterceptor() {
  return <I extends Object, O extends Object>(AnyFn<I, O> next) {
    return (Request<I, O> req) async {
      try {
        return await next(req);
      } on SdkError {
        rethrow;
      } on ConnectException catch (error) {
        throw SdkError.fromConnectException(error);
      }
    };
  };
}