docs: void advancedAsyncCall() {
      ClientCall<HelloRequest, HelloReply> call =
          channel.newCall(GreeterGrpc.getSayHelloMethod(), CallOptions.DEFAULT);
  
      final CountDownLatch latch = new CountDownLatch(1);
  
      call.start(new ClientCall.Listener<HelloReply>() {
  
        @Override
        public void onClose(Status status, Metadata trailers) {
          Verify.verify(status.getCode() == Status.Code.INTERNAL);
          Verify.verify(trailers.containsKey(DEBUG_INFO_TRAILER_KEY));
          try {
            Verify.verify(trailers.get(DEBUG_INFO_TRAILER_KEY).equals(DEBUG_INFO));
          } catch (IllegalArgumentException e) {
            throw new VerifyException(e);
          }
  
          latch.countDown();
        }
      }, new Metadata());
  
      call.sendMessage(HelloRequest.newBuilder().build());
      call.halfClose();
  
      if (!Uninterruptibles.awaitUninterruptibly(latch, 1, TimeUnit.SECONDS)) {
        throw new RuntimeException("timeout!");
      }
    }