That was very helpful, thank you.
My general conclusion is that basically I should not look at status codes, and instead decide:
a) My request can't be safely retried: I can assume the gRPC client MIGHT transparently retry in some cases, but otherwise its probably best to fail on any error.
OR
b) My request can be safely retried: In this case, I should probably just retry any error code, or do some request-specific inspection of the error.
This avoids needing to know a lot about the subtle details of the gRPC implementation. :)
Thanks again this was helpful,
Evan