**Intended outcome:** I have defined a `read` field policy for a type. When I call a mutation through the client (not the hook) using `client.mutate(...)`, I expect to have that field policy applied to the promise's result. In this case, the object with the read policy is an embedded object without any key fields. I rewrote this to use `useMutation`, and its `onCompleted` callback also receives the raw data without the read policy applied. **Actual outcome:** The returned promise receives the raw data from the server without the read policy applied even though the read policy is executed before resolving the promise. ~~The `useMutation` hook behaves as expected.~~ Strangely, so does `client.query(...)`. **How to reproduce the issue:** I have created reproduction sandboxes for [`client.mutate`](https://codesandbox.io/s/client-mutate-returns-raw-data-xn3t6t) and [`useMutation`](https://codesandbox.io/s/use-mutation-returns-raw-data-wb22jo?file=/src/index.jsx). The important bits are in `index.jsx`, specifically `renamePerson` and `const client = ...`. 1. Open the console when running it 2. You'll see the three date strings get converted in the read policy on load. 3. Enter a name and click the **Rename Second Person** button. 4. You'll see the updated date string get converted and a message saying the `time` field is a `string`. It should be a `Date` object which is what the read policy returns. **Versions** The sandbox uses version 3.6.8. This is from my application: ``` System: OS: Linux 5.13 Ubuntu 20.04.5 LTS (Focal Fossa) Binaries: Node: 14.19.0 - ~/.asdf/installs/nodejs/14.19.0/bin/node Yarn: 1.22.19 - /usr/bin/yarn npm: 6.14.16 - ~/.asdf/plugins/nodejs/shims/npm Browsers: Chrome: 105.0.5195.52 Firefox: 104.0 npmPackages: @apollo/client: ^3.5.10 => 3.5.10 ```