React version: 18.3.0-next-3ba7add60-20221201

Hard to reproduce.

In Next.js, in rare cases, and only after a fast refresh, the ref object when using forwardRef is simply `{}`.

This leads to the `TypeError: can't define property "current": Object is not extensible` error when used with `useImperativeHandle`.

```tsx
function Parent() {
  const carouselRef = useRef<any>();

  return <Suspense><Carousel ref={carouselRef} /></Suspense>
}

const Carousel = forwardRef((props, ref) => {
  if (!('current' in ref)) { debugger; }
  const thing = use(aPromise);
  return ...;
});
```

![Screenshot 2023-03-17 at 18 49 21](https://user-images.githubusercontent.com/5406212/225981809-22f575fa-0ec7-4f94-ae23-bffc8bf7c4dd.png)

In `updateImperativeHandle`, the ref is already an empty object.

![Screenshot 2023-03-17 at 19 13 13](https://user-images.githubusercontent.com/5406212/225985622-b8512a61-3a6b-4958-b63f-277219d4c816.png)

I haven't investigated it further yet, the stacktraces are quite hard to follow.
}
  } else {
    nestedUpdateCount = 0;
  }
   If layout work was scheduled, flush it now.
  flushSyncWorkOnAllRoots();
  if (__DEV__) {
    if (enableDebugTracing) {
      logCommitStopped();
    }
  }
  if (enableSchedulingProfiler) {
    markCommitStopped();
  }
  if (enableTransitionTracing) {
     We process transitions during passive effects. However, passive effects can be
     processed synchronously during the commit phase as well as asynchronously after
     paint. At the end of the commit phase, we schedule a callback that will be called
     after the next paint. If the transitions have already been processed (passive
     effect phase happened synchronously), we will schedule a callback to process
     the transitions. However, if we don't have any pending transition callbacks, this
     means that the transitions have yet to be processed (passive effects processed after paint)
     so we will store the end time of paint so that we can process the transitions
     and then call the callback via the correct end time.
    const prevRootTransitionCallbacks = root.transitionCallbacks;
    if (prevRootTransitionCallbacks !== null) {
      schedulePostPaintCallback(endTime => {
        const prevPendingTransitionCallbacks =
          currentPendingTransitionCallbacks;
        if (prevPendingTransitionCallbacks !== null) {