Repository: next.js
Issue: Suspense boundary broken (ignored) after second server action call
Labels: bug,Navigation

### Link to the code that reproduces this issue

https://github.com/trieb-work/nextjs-broken-suspense-bug-example

### To Reproduce

- start the app in dev mode using `pnpm dev` and open it in the browser
- While this page loads you should see first 'page is loading...' from the loading.tsx
- Then page.tsx returns from it's mocked api calls after 1s and is displaying 'Slept for 1000ms. Random digit X'
- Then SlowServerComponent inside of a suspense in page.tsx returns from it's mocked api calls after 3s and is displaying 'Slept for 3000ms. Random digit X'
- So far so good, everything of suspense logic works as expected so far
- Now run the server action on the page via the button "run server action". The behavior should be the same as previously in (no loading.tsx is expected but suspense should work)
- Now run the server action again and watch how "Slept for 1000ms. Random digit XX" and "Slept for 3000ms. Random digit XX" are displayed at the same time (after 4000ms, after both (1000ms + 3000ms) have returned).
- The suspense is now "ignored". "Slept for 1000ms. Random digit XX" should show up before "Slept for 3000ms. Random digit XX" because of the suspense boundary.
- But it seems like the suspense boundary get's ignored if the page is refreshed via an server action for the second time.
- This bug results in bad user experience because long running API calls will block the whole page update and not only a small portion of the UI.
- This behavior now persists for all upcoming form action calls until the page is hard reloaded via the browser navigation.


If starting the app in production mode (pnpm build + pnpm start) the same problem persists. Only difference will be that there is no loading page displayed first (due to static optimization). But this can also be disabled if page is opting out of static optimization.

### Current vs. Expected behavior

Current:
* after the second use of the form server action the suspense boundary is ignored and all server components are returned at once after the last server component has finished rendering.

Expected:
* same behaviour as for initial render or for first server action call
* in particular: the suspense should always behave the same

### Provide environment information

```bash
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 22.6.0: Wed Jul  5 22:22:05 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T6000
  Available memory (MB): 32768
  Available CPU cores: 10
Binaries:
  Node: 18.19.0
  npm: 10.2.3
  Yarn: 1.22.21
  pnpm: 8.6.0
Relevant Packages:
  next: 15.0.0-canary.3 // Latest available version is detected (15.0.0-canary.3).
  eslint-config-next: N/A
  react: 19.0.0-rc-6f23540c7d-20240528
  react-dom: 19.0.0-rc-6f23540c7d-20240528
  typescript: 5.3.3
Next.js Config:
  output: N/A
```


### Which area(s) are affected? (Select all that apply)

Navigation

### Which stage(s) are affected? (Select all that apply)

next dev (local), next start (local), Vercel (Deployed)

### Additional context

_No response_