I have a splat route set up to catch 404s. In its loader, I'm throwing a 404 with new Response(...) like I do anywhere else. Unlike every other route in the app, however, when the splat matches, it only renders the Response message, not a CatchBoundary or anything else, for that matter. For instance, if I have something like throw new Response(`${new Date().toLocaleString()}: page at "${params["*"]}" not found`, { status: 404 });
in the browser I'll only see 12/8/2022, 2:05:20 PM: page at "nothing/here" not found and nothing else—nothing from the root route, no existing CatchBoundary, etc.
I assumed a this would send me down the catch boundary path, but it clearly isn't. Am I missing a convention or making an obvious error in my thinking with this?