Specifically `An update to * inside a test was not wrapped in act(...)` is not logged when a prior update threw. 

<details>
<summary>failing test (#21766)</summary>

```js
// @gate __DEV__
it('warns if a setState is called outside of act(...) after a component threw', () => {
  let setValue = null;
  function App({defaultValue}) {
    if (defaultValue === undefined) {
      throw new Error();
    }
    const [value, _setValue] = React.useState(defaultValue);
    setValue = _setValue;
    return value;
  }

  expect(() => {
    act(() => {
      render(<App defaultValue={undefined} />, container);
    });
  }).toThrow();

  act(() => {
    rerender(<App defaultValue={0} />, container);
  });

  expect(() => setValue(1)).toErrorDev([
    'An update to App inside a test was not wrapped in act(...).',
  ]);
});
```
</details>

What I noticed is that in https://github.com/facebook/react/blob/27c9c95e23ddedb9163373950e364dd62038f6c0/packages/react-reconciler/src/ReactFiberWorkLoop.new.js#L2855-L2865
the `executionContext` will still equal `RetryAfterError` when we would expect a "missing act" warning.

"missing act" warnings are working as expected with legacy roots.
} else {
    retryCache = boundaryFiber.stateNode;
  }
  if (retryCache !== null) {
     
     
    retryCache.delete(wakeable);
  }
  retryTimedOutBoundary(boundaryFiber, retryLane);
}
 Computes the next Just Noticeable Difference (JND) 
 The theory is that a person can't tell the difference between small differences in time.
 Therefore, if we wait a bit longer than necessary that won't translate to a noticeable
 difference in the experience. However, waiting for longer might mean that we can avoid
 showing an intermediate loading state. The longer we have already waited, the harder it
 is to tell small differences in time. Therefore, the longer we've already waited,
 the longer we can wait additionally. At some point we have to give up though.
 We pick a train model where the next boundary commits at a consistent schedule.
 These particular numbers are vague estimates. We expect to adjust them based on research.
function jnd(timeElapsed: number) {
  return timeElapsed < 120
    ? 120
    : timeElapsed < 480
    ? 480
    : timeElapsed < 1080
    ? 1080
    : timeElapsed < 1920
    ? 1920
    : timeElapsed < 3000
    ? 3000