docs: protected void startUnaryCalls(int callsPerChannel,
                                   final AtomicLong counter,
                                   final AtomicBoolean done,
                                   final long counterDelta) {
      for (final ManagedChannel channel : channels) {
        for (int i = 0; i < callsPerChannel; i++) {
          StreamObserver<ByteBuf> observer = new StreamObserver<ByteBuf>() {
            @Override
            public void onNext(ByteBuf value) {
              counter.addAndGet(counterDelta);
            }
  
            @Override
            public void onError(Throwable t) {
              done.set(true);
            }
  
            @Override
            public void onCompleted() {
              if (!done.get()) {
                ByteBuf slice = request.slice();
                ClientCalls.asyncUnaryCall(
                    channel.newCall(unaryMethod, CALL_OPTIONS), slice, this);
              }
            }
          };
          observer.onCompleted();
        }
      }
    }