diff --git a/.changeset/long-hornets-scream.md b/.changeset/long-hornets-scream.md new file mode 100644 index 00000000000..2f924345426 --- /dev/null +++ b/.changeset/long-hornets-scream.md @@ -0,0 +1,5 @@ +--- +"@firebase/firestore": patch +--- + +Fixed a potential issue in our internal queue that could have allowed API calls to be executed out of order. diff --git a/packages/firestore/src/util/async_queue.ts b/packages/firestore/src/util/async_queue.ts index dba59e559a9..1b5bd4e4896 100644 --- a/packages/firestore/src/util/async_queue.ts +++ b/packages/firestore/src/util/async_queue.ts @@ -321,8 +321,10 @@ export class AsyncQueue { * operations were retried successfully. */ enqueueRetryable(op: () => Promise): void { - this.retryableOps.push(op); - this.enqueueAndForget(() => this.retryNextOp()); + this.enqueueAndForget(() => { + this.retryableOps.push(op); + return this.retryNextOp(); + }); } /**