Apollo query loading is always false

I am new to Apollo. I’m trying to create loading spinner. I am using class components and I can’t use hooks. The only way to fetch data for class components is through client.query() The problem is that loading state is always false.

const client = new ApolloClient({
  uri: '/express',
  cache: new InMemoryCache(),
  defaultOptions: {
    query: {
      fetchPolicy: 'network-only',
      notifyOnNetworkStatusChange: 'true',
export const fetchProducts = () => {
  return client
      notifyOnNetworkStatusChange: true,
      fetchPolicy: 'network-only',
      query: PRODUCT_QUERY,
    .then((result) => {
      console.log(result.loading + '<-- spinner')
      return result


@apollo/client: “^3.5.6”
react: “^17.0.2”

I think in this situation you can manually add loading flag before the request, because when the promise is resolved, the request has already been executed.
Another solution, wrap the class component in a HOC, in which call the hook and pass its data.