Under certain conditions we decrement the `__count` attribute too often, which can result in `onInteractionScheduledWorkCompleted` being called prematurely and/or more than once for a given interaction.

- [x] Track interactions scheduled during (sync) render phase.
- [x] Do not double-decrement suspense loads within a sync render.
- [x] Do not decrement sync commits that are waiting on suspense when the `Placeholder` is past its expiration.
- [x] Properly decrement pending interaction count when a suspense resource loads before its placeholder is shown.
- [x] Add test with high priority render between suspended and resolved suspense states (for both sync and async rendering)
nextFlushedExpirationTime === NoWork ||
    nextFlushedExpirationTime === Never
  ) {
    
    
    recomputeCurrentRendererTime();
    currentSchedulerTime = currentRendererTime;
    return currentSchedulerTime;
  }
   There's already pending work. We might be in the middle of a browser
   event. If we were to read the current time, it could cause multiple updates
   within the same event to receive different expiration times, leading to
   tearing. Return the last read time. During the next idle callback, the
   time will be updated.
  return currentSchedulerTime;
}
function requestWork(root: FiberRoot, expirationTime: ExpirationTime) {
  addRootToSchedule(root, expirationTime);
  if (isRendering) {
    
    
    return;
  }
  if (isBatchingUpdates) {
    
    if (isUnbatchingUpdates) {
      
      
      nextFlushedRoot = root;
      nextFlushedExpirationTime = Sync;