@ParameterizedTest
    @ArgumentsSource(UnaryGrpcSerializationFormatArgumentsProvider.class)
    void statusException(SerializationFormat serializationFormat) {
        final UnaryGrpcClient client = Clients.newClient(getUri(serializationFormat), UnaryGrpcClient.class);
        final SimpleRequest request = buildRequest("peanuts");
        try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
            assertThatThrownBy(
                    () -> client.execute("/armeria.grpc.testing.TestService/UnaryCall",
                                         request.toByteArray()).join())
                    .isInstanceOf(CompletionException.class)
                    .hasCauseInstanceOf(ArmeriaStatusException.class)
                    .hasMessageContaining("we don't sell peanuts");
            final ClientRequestContext ctx = captor.get();
            final HttpHeaders trailers = GrpcWebTrailers.get(ctx);
            assertThat(trailers).isNotNull();
            assertThat(trailers.getInt(GrpcHeaderNames.GRPC_STATUS)).isEqualTo(StatusCodes.INTERNAL);
        }
    }
This shows we can handle status that happens in headers.
grpc/src/test/java/com/linecorp/armeria/client/grpc/protocol/UnaryGrpcClientTest.java