diff --git a/.changeset/little-schools-roll.md b/.changeset/little-schools-roll.md new file mode 100644 index 00000000000..71cd7ddd874 --- /dev/null +++ b/.changeset/little-schools-roll.md @@ -0,0 +1,5 @@ +--- +'@apollo/client': patch +--- + +Fix a bug in `QueryReference` where `this.resolve` or `this.reject` might be executed even if `undefined`. diff --git a/src/react/cache/QueryReference.ts b/src/react/cache/QueryReference.ts index 04f1a4be60d..7f42e4013d5 100644 --- a/src/react/cache/QueryReference.ts +++ b/src/react/cache/QueryReference.ts @@ -36,8 +36,8 @@ export class QueryReference { private initialized = false; private refetching = false; - private resolve: (result: ApolloQueryResult) => void; - private reject: (error: unknown) => void; + private resolve: ((result: ApolloQueryResult) => void) | undefined; + private reject: ((error: unknown) => void) | undefined; constructor( observable: ObservableQuery, @@ -157,7 +157,9 @@ export class QueryReference { this.initialized = true; this.refetching = false; this.result = result; - this.resolve(result); + if (this.resolve) { + this.resolve(result); + } return; } @@ -182,7 +184,9 @@ export class QueryReference { if (!this.initialized || this.refetching) { this.initialized = true; this.refetching = false; - this.reject(error); + if (this.reject) { + this.reject(error); + } return; }