@Override
    public void transportReportHeaders(Metadata metadata) {
        executor.execute(() -> {
            try (SafeCloseable ignored = ctx.push()) {
                assert listener != null;
                listener.onHeaders(metadata);
            } catch (Throwable t) {
                closeWhenListenerThrows(t);
            }
        });
    }
Encapsulates the state of a single client call, writing messages from the client and reading responses
from the server, passing to business logic via {@link ClientCall.Listener}.
grpc/src/main/java/com/linecorp/armeria/internal/client/grpc/ArmeriaClientCall.java