private void maybeRunNextWriteTask() {
        writeTaskLock.lock();
        try {
            if (!currentWriteTask.isDone()) {
                return;
            }

            AsyncTask task = writeTasks.poll();
            if (task == null) {
                return;
            }

            long size = Math.min(task.bytes(), writeRegulator.maxRequestSize());
            currentWriteTask = CompletableFuture.allOf(
                writeRateLimiter.consume(size),
                writeVolumeLimiter.acquire(size)
            ).thenRun(task::run);
            task.registerCallback(() -> writeVolumeLimiter.release(size));
            currentWriteTask.whenComplete((nil, ignored) -> maybeRunNextWriteTask());
        } finally {
            writeTaskLock.unlock();
        }
    }
Get adjacent read tasks and merge them into one read task which read range is not exceed 16MB.
s3stream/src/main/java/com/automq/stream/s3/operator/AbstractObjectStorage.java