Nested `startTransition` call "takes over" and makes parent `startTransition` unable to track `isPending`.

Seb says it's a bug.

Repro:

https://codesandbox.io/s/pensive-breeze-rg70wn?file=/IndexPage.js:192-288

1. Click the button
2. `isPending` in `IndexPage.js` is `true`

However, `isPending` in `App.js` is `false`.

Expected: `isPending` in `App.js` is also `true`.
const cachedSnapshot = getSnapshot();
      if (!is(nextSnapshot, cachedSnapshot)) {
        console.error(
          'The result of getSnapshot should be cached to avoid an infinite loop',
        );
        didWarnUncachedGetSnapshot = true;
      }
    }
  }
  const prevSnapshot = (currentHook || hook).memoizedState;
  const snapshotChanged = !is(prevSnapshot, nextSnapshot);
  if (snapshotChanged) {
    hook.memoizedState = nextSnapshot;
    markWorkInProgressReceivedUpdate();
  }
  const inst = hook.queue;
  updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [
    subscribe,
  ]);
   Whenever getSnapshot or subscribe changes, we need to check in the
   commit phase if there was an interleaved mutation. In concurrent mode
   this can happen all the time, but even in synchronous mode, an earlier
   effect may have mutated the store.
  if (
    inst.getSnapshot !== getSnapshot ||
    snapshotChanged ||
     Check if the susbcribe function changed. We can save some memory by
     checking whether we scheduled a subscription effect above.
    (workInProgressHook !== null &&