A well-formed gRPC response always has an HTTP status code of β200 OKβ. The gRPC docs specify a table for mapping other HTTP status codes to gRPC error codes: https://github.com/grpc/grpc/blob/master/doc/http-grpc-status-mapping.md. The client in this package varies from the above table. Specifically, here are HTTP status codes which produce an unexpected error code: HTTP status code | Expected error code | Actual error code -- | -- | -- 400 Bad Request | internal | unknown 404 Not Found | unimplemented | unknown 409 Conflict | unknown | aborted 412 Precondition Failed | unknown | failed_precondition 429 Too Many Requests | unavailable | unknown 502 Bad Gateway | unavailable | unknown 504 Gateway Timeout | unavailable | unknown <!-- notionvc: 4f48b3aa-4a15-4cf6-afa9-2d163231fde9 -->