private void doRequest(int numMessages) {
        if (method.getType().serverSendsOneMessage() && numMessages == 1) {
            // At least 2 requests are required for receiving trailers.
            numMessages = 2;
        }
        if (upstream == null) {
            pendingRequests += numMessages;
        } else {
            upstream.request(numMessages);
        }
    }
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