Repository: next.js
Issue: unstable_cache Value Not Revalidating in Edge Runtime within Suspense Boundary on Vercel
Labels: bug,Runtime,Pages Router

### Link to the code that reproduces this issue

https://github.com/senabi/next-suspense-cache-behavior

### To Reproduce

The problem doesn't happen for a local build or development mode

1. Visit this link: https://next-suspense-cache-behavior.vercel.app/.

2. There's a problem with the route: https://next-suspense-cache-behavior.vercel.app/streaming-cache-bugged. It's supposed to fetch the current time and then fetch it again every 10 seconds. Even though the page waits 200ms before showing the time, it doesn't refresh the time after the first 10 seconds have passed.

3. However, on the route: https://next-suspense-cache-behavior.vercel.app/streaming-cache-no-simulated-latency, without adding a delay (no 200ms wait time), the time updates correctly every 10 seconds.

4. In contrast, the route: https://next-suspense-cache-behavior.vercel.app/streaming-node-runtime, which uses a different setup (Node.js runtime and a unstable_noStore), doesn't have this problem.

5. Lastly, on this link: https://next-suspense-cache-behavior.vercel.app/streaming-cache-patch, with the same 200ms delay, the time does update every 10 seconds, but it needs another cache read from a different async component (without suspense boundary) for this to work.

In conclusion, it seems there's an issue with revalidating cached data every X seconds on the `edge` runtime with a delay. The Node.js runtime and including an async cache read don't have this problem. 

### Current vs. Expected behavior

Current Behavior:
- The route at https://next-suspense-cache-behavior.vercel.app/streaming-cache-bugged does not revalidate as expected.

Expected Behavior:
- The behaviors exhibited by the route using the Node.js runtime (https://next-suspense-cache-behavior.vercel.app/streaming-node-runtime) and the one that has an async component that reads from the cache without a suspense boundary (https://next-suspense-cache-behavior.vercel.app/streaming-cache-patch) are expected for edge runtime


Here is a video demonstrating the cached value failing to revalidate and then revalidating
https://github.com/vercel/next.js/assets/81214874/5865c9b4-c078-41a0-88a2-4b6caa406a60




### Verify canary release

- [X] I verified that the issue exists in the latest Next.js canary release

### Provide environment information

```bash
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000
Binaries:
  Node: 18.18.0
  npm: 9.8.1
  Yarn: N/A
  pnpm: 8.7.5
Relevant Packages:
  next: 14.0.5-canary.41
  eslint-config-next: 14.0.4
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.3.3
Next.js Config:
  output: N/A
```


### Which area(s) are affected? (Select all that apply)

App Router, Data fetching (gS(S)P, getInitialProps), Middleware / Edge (API routes, runtime)

### Which stage(s) are affected? (Select all that apply)

Vercel (Deployed), Other (Deployed)

### Additional context

The problem happens when it's deployed in vercel, I also tried deploying on cloudflare and the behavior is the same
- [vercel url](https://next-suspense-cache-behavior.vercel.app/)
- [cloudflare url](https://next-cache-tests.pages.dev/)