File tree Expand file tree Collapse file tree 1 file changed +20
-14
lines changed
packages/query-db-collection/src Expand file tree Collapse file tree 1 file changed +20
-14
lines changed Original file line number Diff line number Diff line change @@ -692,13 +692,16 @@ export function queryCollectionOptions(
692692 // Query is still loading, wait for the first result
693693 return new Promise < void > ( ( resolve , reject ) => {
694694 const unsubscribe = observer . subscribe ( ( result ) => {
695- if ( result . isSuccess ) {
696- unsubscribe ( )
697- resolve ( )
698- } else if ( result . isError ) {
699- unsubscribe ( )
700- reject ( result . error )
701- }
695+ // Use a microtask in case `subscribe` is called synchronously, before `unsubscribe` is initialized
696+ queueMicrotask ( ( ) => {
697+ if ( result . isSuccess ) {
698+ unsubscribe ( )
699+ resolve ( )
700+ } else if ( result . isError ) {
701+ unsubscribe ( )
702+ reject ( result . error )
703+ }
704+ } )
702705 } )
703706 } )
704707 }
@@ -745,13 +748,16 @@ export function queryCollectionOptions(
745748 // Create a promise that resolves when the query result is first available
746749 const readyPromise = new Promise < void > ( ( resolve , reject ) => {
747750 const unsubscribe = localObserver . subscribe ( ( result ) => {
748- if ( result . isSuccess ) {
749- unsubscribe ( )
750- resolve ( )
751- } else if ( result . isError ) {
752- unsubscribe ( )
753- reject ( result . error )
754- }
751+ // Use a microtask in case `subscribe` is called synchronously, before `unsubscribe` is initialized
752+ queueMicrotask ( ( ) => {
753+ if ( result . isSuccess ) {
754+ unsubscribe ( )
755+ resolve ( )
756+ } else if ( result . isError ) {
757+ unsubscribe ( )
758+ reject ( result . error )
759+ }
760+ } )
755761 } )
756762 } )
757763
You can’t perform that action at this time.
0 commit comments