@Override
            public void run() {
                try {

                    // Dispatch the current chunk to the client.
                    try {
                        dispatchChunk();
                    } catch (RuntimeException e) {
                        // Indicate that nothing is scheduled and re-throw.
                        synchronized (ResponseDispatcher.this) {
                            scheduled = false;
                        }
                        throw e;
                    }

                    // Schedule the next chunk if there is one.
                    synchronized (ResponseDispatcher.this) {
                        // Indicate that nothing is scheduled.
                        scheduled = false;
                        scheduleNextChunk();
                    }
                } catch (Throwable t) {
                    t.printStackTrace();
                }
            }
Schedules the dispatch of a queue of chunks. Whenever chunks are added or input is completed,
the next response chunk is scheduled for delivery to the client. When no more chunks are
available, the stream is half-closed.
grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/TestServiceImpl.java