diff --git a/app/utils/stream.ts b/app/utils/stream.ts
index 2eda768f3..782634595 100644
--- a/app/utils/stream.ts
+++ b/app/utils/stream.ts
@@ -100,7 +100,8 @@ export function fetch(url: string, options?: RequestInit): Promise<any> {
       })
       .catch((e) => {
         console.error("stream error", e);
-        throw e;
+        // throw e;
+        return new Response("", { status: 599 });
       });
   }
   return window.fetch(url, options);
diff --git a/src-tauri/src/stream.rs b/src-tauri/src/stream.rs
index d2c0726b0..8320db3e4 100644
--- a/src-tauri/src/stream.rs
+++ b/src-tauri/src/stream.rs
@@ -119,11 +119,22 @@ pub async fn stream_fetch(
       }
     }
     Err(err) => {
-      println!("Error response: {:?}", err.source().expect("REASON").to_string());
+      let error: String = err.source()
+        .map(|e| e.to_string())
+        .unwrap_or_else(|| "Unknown error occurred".to_string());
+      println!("Error response: {:?}", error);
+      tauri::async_runtime::spawn( async move {
+        if let Err(e) = window.emit(event_name, ChunkPayload{ request_id, chunk: error.into() }) {
+          println!("Failed to emit chunk payload: {:?}", e);
+        }
+        if let Err(e) = window.emit(event_name, EndPayload{ request_id, status: 0 }) {
+          println!("Failed to emit end payload: {:?}", e);
+        }
+      });
       StreamResponse {
         request_id,
         status: 599,
-        status_text: err.source().expect("REASON").to_string(),
+        status_text: "Error".to_string(),
         headers: HashMap::new(),
       }
     }