Gildas 7 éve
szülő
commit
b509d2d09f
1 módosított fájl, 33 hozzáadás és 37 törlés
  1. 33 37
      lib/fetch/bg/fetch.js

+ 33 - 37
lib/fetch/bg/fetch.js

@@ -28,48 +28,44 @@
 
 	let requestId = 1;
 
-	browser.runtime.onMessage.addListener((request, sender, send) => {
-		const sendResponse = response => {
-			if (request.method.startsWith("fetch.")) {
-				fetchResponses.delete(request.requestId);
-			}
-			send(response);
-		};
-		onRequest(request, sendResponse)
-			.catch(error => sendResponse({ error: error.toString() }));
-		return true;
+	browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
+		if (request.method) {
+			onRequest(request)
+				.then(sendResponse)
+				.catch(error => sendResponse({ error: error.toString() }));
+			return true;
+		}
 	});
 
-	async function onRequest(request, sendResponse) {
-		if (request.method) {
-			if (request.method == "fetch") {
-				const responseId = requestId;
-				requestId = requestId + 1;
-				let response;
-				response = await fetch(request.url, request.options);
-				if (response) {
-					if (response.status >= 400) {
-						sendResponse({ error: new Error(response.statusText || response.status) });
-					} else {
-						fetchResponses.set(responseId, response);
-						const headers = {};
-						for (let headerName of response.headers.keys()) {
-							headers[headerName] = response.headers.get(headerName);
-						}
-						sendResponse({ responseId, headers });
+	async function onRequest(request) {
+		if (request.method == "fetch") {
+			const responseId = requestId;
+			requestId = requestId + 1;
+			const response = await fetch(request.url, request.options);
+			if (response) {
+				if (response.status >= 400) {
+					throw new Error(response.statusText || response.status);
+				} else {
+					fetchResponses.set(responseId, response);
+					const headers = {};
+					for (let headerName of response.headers.keys()) {
+						headers[headerName] = response.headers.get(headerName);
 					}
+					return { responseId, headers };
 				}
 			}
-			if (request.method == "fetch.array") {
-				const content = fetchResponses.get(request.requestId);
-				const buffer = await content.arrayBuffer();
-				sendResponse({ array: Array.from(new Uint8Array(buffer)) });
-			}
-			if (request.method == "fetch.text") {
-				const content = fetchResponses.get(request.requestId);
-				const text = await content.text();
-				sendResponse({ text });
-			}
+		}
+		if (request.method == "fetch.array") {
+			const content = fetchResponses.get(request.requestId);
+			fetchResponses.delete(request.requestId);
+			const buffer = await content.arrayBuffer();
+			return { array: Array.from(new Uint8Array(buffer)) };
+		}
+		if (request.method == "fetch.text") {
+			const content = fetchResponses.get(request.requestId);
+			fetchResponses.delete(request.requestId);
+			const text = await content.text();
+			return { text };
 		}
 	}