title: Why Apollo client does additional request when I write query?
body: <p>I have the next situation. I have two screens, a table with all products, and a second screen with a form where I am adding a new product. I want that when I add a new product, it should be added in the cache.</p>
  <p>I have next code:</p>
  <pre><code> const [useAction] = useMutation(mutation, {
      update: (cache, { data }) =&gt; {
        const tableCache = cache.readQuery({ query: queryForRefetch });
  
        const cacheProperty = Object.keys(tableCache)[0];
        const tableElements = tableCache[cacheProperty];
  
        const resultProperty = Object.keys(data)[0];
        const newElement = data[resultProperty];
  
        const formatedElements = [...tableElements, newElement];
  
        cache.writeQuery({
          query: FIND_PRODUCTS,
          data: { findProducts: formatedElements },
          broadcast: false, // Not work
        });
      },
    });
  </code></pre>
  <p>But the problem is that, when I am adding a new product, Apollo makes two requests, first for creating products, and second for getting all products, and in this case, the modification of cache does not sense. I want to do one request for creating a product, and JS himself creates a new element with modified Cache. Is is possible?</p>