If a exception happened at one of trailing interceptors
and makes the interceptor has no problem.
So I thought there should be some where wrapping
pseudocode
```python
# somewhere deep in grpcio ...
def run_user_defined_interceptor_method(response):
try :
response = intercept_unary_unary(
continuation, client_call_details, request )
except Exception as e:
response = _FailureOutcome(exception = e)
return response
```
so even I run into a exception in interceptor and interceptor handle well
I'm quite sure about how it works because
codes under where exception happened doesn't run
I can't find where those wrappings are happened like pseudocode
class that implements abstract method "intercept_unary_unary" has no more than a abstract code,
so as I said, there should be something more under grpcio
...
This design was impressive because
it looked like mocking kind of Javascript's then(), catch()
and async pattern, but not actually async (in a way of propagating error)
and makes it easy to trace errors
most of all, as a client side, it looks like real network connection even it was problem from interceptor
and as for enterprise level, it looked quite safe from unexpected errors
I have no experience with using gRPC as enterprise level,
just got interested at gRPC, I'm senior freshman now.