RMD059 — An async lifecycle rejected
@state posts: unknown[] = [];
@mounted async load() {
this.posts = await fetchPosts(); // ✗ if this throws, nothing tells anyone
}
An error boundary does not catch this, and that is deliberate. The rejection arrives at an arbitrary later moment — the page is already on screen and interactive, and there is no render left to fail. Replacing what the reader is using with a fallback at that point is the worse outcome.
What follows is why the report exists. The page renders exactly as though the method had succeeded:
posts is still [], the empty state shows, and the only trace is an unhandled rejection in a
console nobody is watching.
Handle it where it happens, and put the failure somewhere the render can see:
@state error = "";
@mounted async load() {
try { this.posts = await fetchPosts(); }
catch (e) { this.error = String(e); }
}
If the failure really should take the page down, re-throw it from render() — that is a render,
and a boundary can see it.
ramonda-check reports the same method before it ships, as
unguarded-async-lifecycle.
Next
- All diagnostics — every code the framework can report.
- Checking your app — the faults proved from the source, before anything runs.