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();
}
}