From 044b5eb56f1b1f84085dcea94cf3230f4db3bb50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Zieli=C5=84ski?= Date: Wed, 17 Jan 2024 11:30:05 +0100 Subject: [PATCH] Service worker: Retry ERR_HTTP2_PROTOCOL_ERROR Playground.wordpress.net sometimes returns ERR_HTTP2_PROTOCOL_ERROR for bursts of static assets requests. This commit adds a simple retrying mechanism at the service worker level. --- packages/playground/remote/service-worker.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/playground/remote/service-worker.ts b/packages/playground/remote/service-worker.ts index 865b48b971..a396fc24a1 100644 --- a/packages/playground/remote/service-worker.ts +++ b/packages/playground/remote/service-worker.ts @@ -54,7 +54,21 @@ initializeServiceWorker({ event.request, staticAssetsDirectory ); - return fetch(request); + return fetch(request).catch((e) => { + if (e?.name === 'TypeError') { + // This could be an ERR_HTTP2_PROTOCOL_ERROR that sometimes + // happen on playground.wordpress.net. Let's add a randomized + // delay and retry once + return new Promise((resolve) => { + setTimeout(() => { + resolve(fetch(request)); + }, Math.random() * 1500); + }) as Promise; + } + + // Otherwise let's just re-throw the error + throw e; + }); } // Path the block-editor.js file to ensure the site editor's iframe