From 29e2502d74c5ac3e49e0582f199f93fce6e0e335 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 28 Feb 2026 11:22:54 -0800 Subject: [PATCH] Fix: Await async proxy handlers (#6371) --- src/__tests__/pages/api/services/proxy.test.js | 13 +++++++++++++ src/pages/api/services/proxy.js | 8 ++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/__tests__/pages/api/services/proxy.test.js b/src/__tests__/pages/api/services/proxy.test.js index be35412b1..4d4390697 100644 --- a/src/__tests__/pages/api/services/proxy.test.js +++ b/src/__tests__/pages/api/services/proxy.test.js @@ -344,4 +344,17 @@ describe("pages/api/services/proxy", () => { expect(res.statusCode).toBe(500); expect(res.body).toEqual({ error: "Unexpected error" }); }); + + it("returns 500 when an async proxy handler throws", async () => { + getServiceWidget.mockResolvedValue({ type: "linkwarden" }); + handlerFn.handler.mockRejectedValueOnce(new Error("proxy boom")); + + const req = { method: "GET", query: { group: "g", service: "s", index: "0" } }; + const res = createMockRes(); + + await servicesProxy(req, res); + + expect(res.statusCode).toBe(500); + expect(res.body).toEqual({ error: "Unexpected error" }); + }); }); diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index 0cdf806ff..b6524972c 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -29,7 +29,7 @@ export default async function handler(req, res) { if (serviceProxyHandler instanceof Function) { // quick return for no endpoint services, calendar is an exception if (!req.query.endpoint || serviceProxyHandler === calendarProxyHandler) { - return serviceProxyHandler(req, res); + return await serviceProxyHandler(req, res); } // map opaque endpoints to their actual endpoint @@ -90,15 +90,15 @@ export default async function handler(req, res) { } if (endpointProxy instanceof Function) { - return endpointProxy(req, res, map); + return await endpointProxy(req, res, map); } - return serviceProxyHandler(req, res, map); + return await serviceProxyHandler(req, res, map); } if (widget.allowedEndpoints instanceof RegExp) { if (widget.allowedEndpoints.test(req.query.endpoint)) { - return serviceProxyHandler(req, res); + return await serviceProxyHandler(req, res); } }