presto-main/src/main/java/io/prestosql/split/BufferingSplitSource.java/GetNextBatch/fetchSplits
class GetNextBatch:        private ListenableFuture<?> fetchSplits()
        {
            if (splits.size() >= min) {
                return immediateFuture(null);
            }
            ListenableFuture<SplitBatch> future = splitSource.getNextBatch(partitionHandle, lifespan, max - splits.size());
            return Futures.transformAsync(future, splitBatch -> {
                splits.addAll(splitBatch.getSplits());
                if (splitBatch.isLastBatch()) {
                    noMoreSplits = true;
                    return immediateFuture(null);
                }
                return fetchSplits();
            }, directExecutor());
        }