diff --git a/.changeset/spotty-pandas-wait.md b/.changeset/spotty-pandas-wait.md new file mode 100644 index 000000000000..975e838fa90c --- /dev/null +++ b/.changeset/spotty-pandas-wait.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-netlify': patch +'@sveltejs/adapter-vercel': patch +--- + +fix: await `init` on every request to prevent race condition diff --git a/packages/adapter-netlify/src/edge.js b/packages/adapter-netlify/src/edge.js index f0d9944741ca..348549015331 100644 --- a/packages/adapter-netlify/src/edge.js +++ b/packages/adapter-netlify/src/edge.js @@ -31,9 +31,11 @@ const initialized = server.init({ export default async function handler(request, context) { if (!origin) { origin = new URL(request.url).origin; - await initialized; } + // always await initialization to prevent race condition with concurrent requests + await initialized; + return server.respond(request, { platform: { context }, getClientAddress() { diff --git a/packages/adapter-vercel/files/edge.js b/packages/adapter-vercel/files/edge.js index f87bb6e64a98..70707543b2ce 100644 --- a/packages/adapter-vercel/files/edge.js +++ b/packages/adapter-vercel/files/edge.js @@ -54,9 +54,11 @@ const initialized = server.init({ export default async (request, context) => { if (!origin) { origin = new URL(request.url).origin; - await initialized; } + // always await initialization to prevent race condition with concurrent requests + await initialized; + return server.respond(request, { getClientAddress() { return /** @type {string} */ (request.headers.get('x-forwarded-for'));