diff --git a/src/serviceWorker/fetchHandlers.ts b/src/serviceWorker/fetchHandlers.ts
index 4e6c316..6872d0a 100644
--- a/src/serviceWorker/fetchHandlers.ts
+++ b/src/serviceWorker/fetchHandlers.ts
@@ -1,4 +1,5 @@
 import { getBook, getBooks, saveBook } from "./db";
+import { composeResponseStatus } from "./utils";
 
 export interface PathHandler {
   /** Path start for handler */
@@ -31,7 +32,7 @@ export const handleBookUpload = async (request: Request) => {
       return new Response(JSON.stringify(book));
     } else throw new Error(res.status.toString() + res.statusText);
   } catch (err) {
-    return new Response(JSON.stringify(err));
+    return new Response(JSON.stringify(err), composeResponseStatus(err));
   }
 };
 
@@ -51,5 +52,8 @@ export const handleBook = async (request: Request, hash: string) => {
   const book = await getBook(hash);
   if (book) return new Response(JSON.stringify(book));
 
-  return new Response("No such book :(");
+  return new Response(null, {
+    status: 404,
+    statusText: "No such book :(",
+  });
 };
diff --git a/src/serviceWorker/utils.ts b/src/serviceWorker/utils.ts
index c236df6..a842d73 100644
--- a/src/serviceWorker/utils.ts
+++ b/src/serviceWorker/utils.ts
@@ -7,3 +7,9 @@ export const getHash = (path: string) => {
 
   return path.substr("/book/".length, hashLength);
 };
+
+export const composeResponseStatus = (err: Error): ResponseInit => {
+  if (err.name === "NetowrkError")
+    return { status: 503, statusText: err.message };
+  else return { status: 500, statusText: "Something bad happened (IDK)" };
+};
diff --git a/src/utils/api.ts b/src/utils/api.ts
index bc6f6e5..e14b4ad 100644
--- a/src/utils/api.ts
+++ b/src/utils/api.ts
@@ -45,7 +45,7 @@ export const validateResponse = (content: unknown): content is BookT => {
       if (!(key in content)) {
         if (process.env.NODE_ENV === "development")
           console.error(`${key} is not specified in server response`);
-        return false;
+        throw new Error(`${key} is not specified in server response`);
       }
 
   return true;