@@ -90,10 +90,11 @@ function serveIconsDev() {
9090 } ;
9191}
9292
93- /** Nitro forwards client disconnects (page reload/test teardown) as middleware
94- * errors, so Vite presents a red overlay for a request the browser deliberately
95- * abandoned. Swallow only that narrow dev-only case; every real server error
96- * still reaches Vite's normal error handler. */
93+ /** Nitro forwards client disconnects (page reload/test teardown) and its own
94+ * upstream proxy resets as middleware errors, so Vite presents a red overlay
95+ * for an abandoned request or a dev-worker reconnect. Swallow only those exact
96+ * dev-only transport failures; every application error still reaches Vite's
97+ * normal error handler. */
9798function ignoreAbortedRequestResets ( ) {
9899 return {
99100 name : "pyops-ignore-aborted-request-resets" ,
@@ -114,7 +115,9 @@ function ignoreAbortedRequestResets() {
114115 server . middlewares . use ( ( error , req , res , next ) => {
115116 const reset = error . code === "ECONNRESET" || error . cause ?. code === "ECONNRESET" ;
116117 const disconnected = req . aborted || req . destroyed || res . destroyed || res . writableEnded ;
117- if ( reset && disconnected ) return ;
118+ const nitroProxyReset =
119+ error . message === "socket hang up" || error . message === "read ECONNRESET" ;
120+ if ( reset && ( disconnected || nitroProxyReset ) ) return ;
118121 next ( error ) ;
119122 } ) ;
120123 } ;
0 commit comments