private async refillPending()

in packages/dynamodb-batch-iterator/src/BatchOperation.ts [201:231]


    private async refillPending() {
        while (
            !this.sourceDone &&
            this.toSend.length < this.batchSize
        ) {
            const toProcess = isIteratorResult(this.sourceNext)
                ? this.sourceNext
                : await Promise.race([
                    this.sourceNext,
                    Promise.race(this.throttled)
                ]);

            if (isIteratorResult(toProcess)) {
                this.sourceDone = toProcess.done;
                if (!this.sourceDone) {
                    this.addToSendQueue(toProcess.value);
                    this.sourceNext = this.iterator.next();
                }
            } else {
                this.enqueueThrottled(toProcess);
            }
        }

        while (this.toSend.length < this.batchSize && this.throttled.size > 0) {
            this.enqueueThrottled(await Promise.race(this.throttled));
        }

        if (this.toSend.length > 0) {
            await this.doBatchRequest();
        }
    }