Repository: apollographql/apollo-client

Problem statement:
Fetching data again and again if more queries without id executed
The problem started after upgrading from beta 45 to beta 48 and is related to missing `id` in queries. 

**Intended outcome:**
I have two components, displaying a list of items, each has its own query. The queries are very similar and differ only in query arguments.

```tsx
function MyRecentIncidents() {
  const {loading, error, data} = useQuery<MyRecentIncidentsQuery>(MY_RECENT_INCIDENTS);
  console.log('[Query 1] loading:', loading, 'error:', error, 'data:', data);
  return null;
}

const MY_RECENT_INCIDENTS = gql`
  query MyRecentIncidents {
    viewer {
      incidents(first: 5, createdByViewer: true) {
        nodes {
          id
        }
      }
    }
  }
`;

function RecentIncidents() {
  const {loading, error, data} = useQuery<RecentIncidentsQuery>(RECENT_INCIDENTS);
  console.log('[Query 2] loading:', loading, 'error:', error, 'data:', data);
  return null;
}

const RECENT_INCIDENTS = gql`
  query RecentIncidents {
    viewer {
      incidents(first: 5) {
        nodes {
          id
        }
      }
    }
  }
`;

const client = new ApolloClient({
  cache: new InMemoryCache(),
  uri: process.env.REACT_APP_API_GRAPHQL_URL,
});

export default function App() {
  return (
    <ApolloProvider client={client}>
      <MyRecentIncidents/>
      <RecentIncidents/>
    </ApolloProvider>
  );
}

```
It should fetch each query just once, render items and doesn't do anything more.

**Actual outcome:**
After initial queries complete, a new request to the server is started. Once completed, _the other_ query starts. Then the first one. And again and again… 

However, `loading` status doesn't change, the components don't rerender. It just fetches data in the background.

![image](https://user-images.githubusercontent.com/243381/82276640-efe5f700-99d9-11ea-8e5a-90aa91508936.png)

**My observations:**
The code above worked in beta 45, the problem occurs in beta 48+. I didn't try 46 and 47. It's still present in the just-released beta 49.

Querying `id` field on `viewer` like

```tsx
const RECENT_INCIDENTS = gql`
  query RecentIncidents {
    viewer {
      id # <--- this fixes it
      incidents(first: 5) {
        nodes {
          id
        }
      }
    }
  }
`;
```
in both queries fixes the problem.

**Versions**
```
  System:
    OS: Windows 10 10.0.18363
  Binaries:
    Node: 12.13.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.21.1 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.12.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: 44.18362.449.0
  npmPackages:
    @apollo/client: ^3.0.0-beta.48 => 3.0.0-beta.48 
    @apollo/link-context: ^2.0.0-beta.3 => 2.0.0-beta.3 
    @apollo/link-error: ^2.0.0-beta.3 => 2.0.0-beta.3 
```

endless loop of requests after updating past 3.0.0-beta.45
I have a similar problem as #6434, but even without any failed queries.
Just an endless looop of requests. Here's a preview of how the "initiator" tab looks like for one of the requests:
<details>```
  | (anonymous) | @ | VM13:1
-- | -- | -- | --
  | (anonymous) | @ | createHttpLink.js:78
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
  | setTimeout (async) |   |  
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDirty | @ | QueryInfo.js:44
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.setDiff | @ | QueryInfo.js:53
  | callback | @ | QueryInfo.js:117
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatch | @ | inMemoryCache.js:224
  | InMemoryCache._this.maybeBroadcastWatch.Object.makeCacheKey | @ | inMemoryCache.js:26
  | recomputeNewValue | @ | bundle.esm.js:247
  | Slot.withValue | @ | context.esm.js:69
  | reallyRecompute | @ | bundle.esm.js:233
  | ./node_modules/optimism/lib/bundle.esm.js.Entry.recompute | @ | bundle.esm.js:160
  | optimistic | @ | bundle.esm.js:479
  | (anonymous) | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.broadcastWatches | @ | inMemoryCache.js:218
  | ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.InMemoryCache.performTransaction | @ | inMemoryCache.js:198
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.markResult | @ | QueryInfo.js:135
  | (anonymous) | @ | QueryManager.js:467
  | (anonymous) | @ | asyncMap.js:13
  | (anonymous) | @ | asyncMap.js:13
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | iteration.js:4
  | iterateObserversSafely | @ | iteration.js:4
  | next | @ | Concast.js:25
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | Observable.js:327
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | next | @ | bundle.esm.js:29
  | notifySubscription | @ | Observable.js:135
  | onNotify | @ | Observable.js:179
  | next | @ | Observable.js:235
  | (anonymous) | @ | createHttpLink.js:85
  | Promise.then (async) |   |  
  | (anonymous) | @ | createHttpLink.js:84
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | bundle.esm.js:11
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | (anonymous) | @ | Observable.js:319
  | Subscription | @ | Observable.js:197
  | subscribe | @ | Observable.js:279
  | complete | @ | Concast.js:56
  | ./node_modules/@apollo/client/utilities/observables/Concast.js.Concast.start | @ | Concast.js:79
  | Concast | @ | Concast.js:71
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getObservableFromLink | @ | QueryManager.js:420
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.getResultsFromLink | @ | QueryManager.js:459
  | resultsFromLink | @ | QueryManager.js:577
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryByPolicy | @ | QueryManager.js:605
  | fromVariables | @ | QueryManager.js:526
  | ./node_modules/@apollo/client/core/QueryManager.js.QueryManager.fetchQueryObservable | @ | QueryManager.js:533
  | (anonymous) | @ | ObservableQuery.js:341
  | ./node_modules/@apollo/client/core/Reobserver.js.Reobserver.reobserve | @ | Reobserver.js:18
  | ./node_modules/@apollo/client/core/ObservableQuery.js.ObservableQuery.reobserve | @ | ObservableQuery.js:346
  | listeners.add.oqListener | @ | QueryInfo.js:64
  | (anonymous) | @ | QueryInfo.js:77
  | ./node_modules/@apollo/client/core/QueryInfo.js.QueryInfo.notify | @ | QueryInfo.js:77
  | (anonymous) | @ | QueryInfo.js:44
```</details>

My issue started happening exactly with version 3.0.0-beta.46 and latest I tested is `3.0.0-rc.4` which still reproduces the bug.
Running my app with 3.0.0-beta.45 works just fine-tested without any other code changes. That version performs great-without any endless requests going out.

**Intended outcome:**
no request loop

**Actual outcome:**
there is an endless  loop of request coming from my browser to the graphql endpoint
**How to reproduce the issue:**
<!--
If possible, please create a reproduction using https://github.com/apollographql/react-apollo-error-template and link to it here. If you prefer an in-browser way to create reproduction, try: https://codesandbox.io/s/github/apollographql/react-apollo-error-template

Instructions for how the issue can be reproduced by a maintainer or contributor. Be as specific as possible, and only mention what is necessary to reproduce the bug. If possible, try to isolate the exact circumstances in which the bug occurs and avoid speculation over what the cause might be.
-->
Not sure, but I will gladly test out any potential fix. We have an SSR app which has couple of queries hooked into several components in react router. More specifically the page that is suffereing the issue is rendering a https://github.com/JustFly1984/react-google-maps-api component and it's displaying markers in the map.
Also it's got side view which has a regular list and this list has another Graphql query.


**Versions**
<!--
Run the following command in your project directory, and paste its (automatically copied to clipboard) results here:

`npx envinfo@latest --preset apollo --clipboard`
-->
```
  System:
    OS: Linux 5.4 Ubuntu 20.04 LTS (Focal Fossa)
  Binaries:
    Node: 12.14.1 - ~/.nvm/versions/node/v12.14.1/bin/node
    Yarn: 1.22.4 - ~/.yarn/bin/yarn
    npm: 6.13.4 - ~/.nvm/versions/node/v12.14.1/bin/npm
  Browsers:
    Chrome: 83.0.4103.97
    Firefox: 77.0.1
  npmPackages:
    @apollo/client: 3.0.0-beta.46 => 3.0.0-beta.46 
    @apollo/gateway: ^0.14.1 => 0.14.1 
    @apollo/link-batch-http: ^2.0.0-beta.3 => 2.0.0-beta.3 
    @apollo/link-error: ^2.0.0-beta.3 => 2.0.0-beta.3 
    @apollo/link-ws: ^2.0.0-beta.3 => 2.0.0-beta.3 
    @apollo/react-ssr: ^3.1.5 => 3.1.5 
    @apollo/server: ^3.0.0-alpha.1 => 3.0.0-alpha.1 
    apollo-client: ^2.6.10 => 2.6.10 
    apollo-link-http: ^1.5.17 => 1.5.17 
    apollo-server: ^2.14.4 => 2.14.4 
```


Hints:
Ran into the same issue.  I've narrowed it down to being introduced in `v3.0.0-beta.46`.
@vhenzl Can you try this?
```ts
new InMemoryCache({
  typePolicies: {
    // Assuming the __typename for the viewer object is "Viewer":
    Viewer: {
      // This means the Viewer object is a singleton whose identity
      // is independent of any of its fields (other than __typename),
      // so the cache can assume that any two Viewer objects are merely
      // different views of the same object, and safely merge their
      // fields rather than just replacing one with the other, which is
      // what seems to be happening right now. This is different from
      // keyFields: false in that it allows the Viewer singleton object
      // to be normalized, like other entity objects, rather than treating
      // it as unidentified data.
      keyFields: [],
    },
  },
})
```
You could also write `keyFields: ["id"]` if there are going to be multiple different `Viewer` objects within the same application, and the cache will enforce that the `id` field is always present.
@benjamn Thanks for the answer. Unfortunately, I can't use the trick with `keyFields: []` as `viewer` is `User` and can appear again anywhere in the tree. So the only way for me is enforcing `id` on `User`.

Is this new behaviour considered a bug or is it intended, expected?

If it's expected, my guess is the same problem can occur for any type anywhere in the query, not just for the top-level fields. Right? 

Then the safest way how to prevent it would be to enforce querying `id` field for all types that have it. And possibly autogenerate the whole `typePolicies` object from the schema with a tool like [@graphql-codegen](https://github.com/dotansimha/graphql-code-generator). Would you agree? 
most likely a bug, local mutations doing `cache.modify` will also cause backend queries dispatched (with id),
like:

```ts
export const toggleComments = (
    root: {},
    variables: {
        id: string,
        commentsOpenColumnIndex: number | null
    },
    { cache }: LocalResolverContext<NormalizedCacheObject, {}>
) => {
    const id = cache.identify({
        __typename: 'ReportType',
        id: variables.id
    });

    if(id) {
        cache.modify( {
            _commentsOpenColumnIndex: _currentValue => variables.commentsOpenColumnIndex
        }, id)
        return true
    } else {
        return false
    }
}
``` 

also working fine on `3.0.0-beta.45`
This issue exists for me in beta 50. Adding ID to the graphql query also resolved the bug. 


Patch:
diff --git a/src/core/QueryInfo.ts b/src/core/QueryInfo.ts
--- a/src/core/QueryInfo.ts
+++ b/src/core/QueryInfo.ts
@@ -165,7 +165,10 @@ export class QueryInfo {
     this.variables =
     this.networkStatus =
     this.networkError =
-    this.graphQLErrors = void 0;
+    this.graphQLErrors =
+    this.lastWatch =
+    this.lastWrittenResult =
+    this.lastWrittenVars = void 0;
 
     const oq = this.observableQuery;
     if (oq) oq.stopPolling();
@@ -192,6 +195,9 @@ export class QueryInfo {
     return this;
   }
 
+  private lastWrittenResult?: FetchResult<any>;
+  private lastWrittenVars?: WatchQueryOptions["variables"];
+
   public markResult<T>(
     result: FetchResult<T>,
     options: Pick<WatchQueryOptions,
@@ -200,6 +206,8 @@ export class QueryInfo {
       | "errorPolicy">,
     allowCacheWrite: boolean,
   ) {
+    this.graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];
+
     if (options.fetchPolicy === 'no-cache') {
       this.diff = { result: result.data, complete: true };
 
@@ -218,11 +226,57 @@ export class QueryInfo {
         // of writeQuery, so we can store the new diff quietly and ignore
         // it when we receive it redundantly from the watch callback.
         this.cache.performTransaction(cache => {
-          cache.writeQuery({
-            query: this.document!,
-            data: result.data as T,
-            variables: options.variables,
-          });
+          if (equal(result, this.lastWrittenResult) &&
+              equal(options.variables, this.lastWrittenVars)) {
+            // If result is the same as the last result we received from
+            // the network (and the variables match too), avoid writing
+            // result into the cache again. The wisdom of skipping this
+            // cache write is far from obvious, since any cache write
+            // could be the one that puts the cache back into a desired
+            // state, fixing corruption or missing data. However, if we
+            // always write every network result into the cache, we enable
+            // feuds between queries competing to update the same data in
+            // incompatible ways, which can lead to an endless cycle of
+            // cache broadcasts and useless network requests. As with any
+            // feud, eventually one side must step back from the brink,
+            // letting the other side(s) have the last word(s). There may
+            // be other points where we could break this cycle, such as
+            // silencing the broadcast for cache.writeQuery (not a good
+            // idea, since it just delays the feud a bit) or somehow
+            // avoiding the network request that just happened (also bad,
+            // because the server could return useful new data). All
+            // options considered, skipping this cache write seems to be
+            // the least damaging place to break the cycle, because it
+            // reflects the intuition that we recently wrote this exact
+            // result into the cache, so the cache *should* already/still
+            // contain this data. If some other query has clobbered that
+            // data in the meantime, that's too bad, but there will be no
+            // winners if every query blindly reverts to its own version
+            // of the data. This approach also gives the network a chance
+            // to return new data, which will be written into the cache as
+            // usual, notifying only those queries that are directly
+            // affected by the cache updates, as usual. In the future, an
+            // even more sophisticated cache could perhaps prevent or
+            // mitigate the clobbering somehow, but that would make this
+            // particular cache write even less important, and thus
+            // skipping it would be even safer than it is today.
+            if (this.diff && this.diff.complete) {
+              // Reuse data from the last good (complete) diff that we
+              // received, when possible.
+              result.data = this.diff.result;
+              return;
+            }
+            // If the previous this.diff was incomplete, fall through to
+            // re-reading the latest data with cache.diff, below.
+          } else {
+            cache.writeQuery({
+              query: this.document!,
+              data: result.data as T,
+              variables: options.variables,
+            });
+            this.lastWrittenResult = result;
+            this.lastWrittenVars = options.variables;
+          }
 
           const diff = cache.diff<T>({
             query: this.document!,
@@ -241,10 +295,11 @@ export class QueryInfo {
             result.data = diff.result;
           }
         });
+
+      } else {
+        this.lastWrittenResult = this.lastWrittenVars = void 0;
       }
     }
-
-    this.graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];
   }
 
   public markReady() {
@@ -254,6 +309,7 @@ export class QueryInfo {
 
   public markError(error: ApolloError) {
     this.networkStatus = NetworkStatus.error;
+    this.lastWrittenResult = this.lastWrittenVars = void 0;
 
     if (error.graphQLErrors) {
       this.graphQLErrors = error.graphQLErrors;


Test patch:
diff --git a/src/core/__tests__/QueryManager/index.ts b/src/core/__tests__/QueryManager/index.ts
--- a/src/core/__tests__/QueryManager/index.ts
+++ b/src/core/__tests__/QueryManager/index.ts
@@ -36,6 +36,7 @@ import observableToPromise, {
 import subscribeAndCount from '../../../utilities/testing/subscribeAndCount';
 import { stripSymbols } from '../../../utilities/testing/stripSymbols';
 import { itAsync } from '../../../utilities/testing/itAsync';
+import { ApolloClient } from '../../../ApolloClient';
 
 interface MockedMutation {
   reject: (reason: any) => any;
@@ -2049,19 +2050,6 @@ describe('QueryManager', () => {
             networkStatus: NetworkStatus.ready,
           });
         },
-        result => {
-          expect(stripSymbols(result)).toEqual({
-            data: {
-              ...data2,
-              author: {
-                ...data2.author,
-                id: data1.author.id,
-              },
-            },
-            loading: false,
-            networkStatus: NetworkStatus.ready,
-          });
-        },
       ),
     ]).then(resolve, reject);
   });
@@ -2163,6 +2151,132 @@ describe('QueryManager', () => {
     ]).then(resolve, reject);
   });
 
+  itAsync("should not write unchanged network results to cache", (resolve, reject) => {
+    const cache = new InMemoryCache({
+      typePolicies: {
+        Query: {
+          fields: {
+            info: {
+              merge(_, incoming) {
+                return incoming;
+              },
+            },
+          },
+        },
+      },
+    });
+
+    const client = new ApolloClient({
+      cache,
+      link: new ApolloLink(operation => new Observable((observer: Observer<FetchResult>) => {
+        switch (operation.operationName) {
+          case "A":
+            observer.next!({ data: { info: { a: "ay" }}});
+            break;
+          case "B":
+            observer.next!({ data: { info: { b: "bee" }}});
+            break;
+        }
+        observer.complete!();
+      })),
+    });
+
+    const queryA = gql`query A { info { a } }`;
+    const queryB = gql`query B { info { b } }`;
+
+    const obsA = client.watchQuery({
+      query: queryA,
+      returnPartialData: true,
+    });
+
+    const obsB = client.watchQuery({
+      query: queryB,
+      returnPartialData: true,
+    });
+
+    subscribeAndCount(reject, obsA, (count, result) => {
+      if (count === 1) {
+        expect(result).toEqual({
+          loading: true,
+          networkStatus: NetworkStatus.loading,
+          data: {},
+        });
+      } else if (count === 2) {
+        expect(result).toEqual({
+          loading: false,
+          networkStatus: NetworkStatus.ready,
+          data: {
+            info: {
+              a: "ay",
+            },
+          },
+        });
+      } else if (count === 3) {
+        expect(result).toEqual({
+          loading: true,
+          networkStatus: NetworkStatus.loading,
+          data: {
+            info: {},
+          },
+        });
+      } else if (count === 4) {
+        expect(result).toEqual({
+          loading: false,
+          networkStatus: NetworkStatus.ready,
+          data: {
+            info: {
+              a: "ay",
+            },
+          },
+        });
+        setTimeout(resolve, 100);
+      } else {
+        reject(new Error(`Unexpected ${JSON.stringify({count,result})}`));
+      }
+    });
+
+    subscribeAndCount(reject, obsB, (count, result) => {
+      if (count === 1) {
+        expect(result).toEqual({
+          loading: true,
+          networkStatus: NetworkStatus.loading,
+          data: {},
+        });
+      } else if (count === 2) {
+        expect(result).toEqual({
+          loading: false,
+          networkStatus: NetworkStatus.ready,
+          data: {
+            info: {
+              b: "bee",
+            },
+          },
+        });
+      } else if (count === 3) {
+        expect(result).toEqual({
+          loading: true,
+          networkStatus: NetworkStatus.loading,
+          data: {
+            info: {},
+          },
+        });
+      } else if (count === 4) {
+        expect(result).toEqual({
+          loading: false,
+          networkStatus: NetworkStatus.ready,
+          data: {
+            info: {
+              b: "bee",
+            },
+          },
+        });
+        setTimeout(resolve, 100);
+      } else {
+        reject(new Error(`Unexpected ${JSON.stringify({count,result})}`));
+      }
+    });
+  });
+
   itAsync('should not error when replacing unidentified data with a normalized ID', (resolve, reject) => {
     const queryWithoutId = gql`
       query {