@Override
            public void run() {
              try {
                int chunksLeftToRead = numChunksToRead;
                while (chunksLeftToRead > 0) {
                  writableChannel.getNextChunk();
                  writableChannel.resolveOldestChunk(null);
                  chunksLeftToRead--;
                }
                result.getBlobDataChannel().close();
                while (writableChannel.getNextChunk(100) != null) {
                  writableChannel.resolveOldestChunk(null);
                }
              } catch (Exception e) {
                callbackException.set(e);
              } finally {
                readCompleteLatch.countDown();
              }
            }
Test that the operation is completed and an exception with the error code {@link RouterErrorCode#ChannelClosed} is
set when the {@link ReadableStreamChannel} is closed before all chunks are read for a specific blob size and
number of chunks to read.
@param numChunksInBlob the number of chunks in the blob to put/get.
@param numChunksToRead the number of chunks to read from the {@link AsyncWritableChannel} before closing the
                       {@link ReadableStreamChannel}.
@throws Exception
ambry-router/src/test/java/com/github/ambry/router/GetBlobOperationTest.java