diff --git a/js/feedEngine/stages.js b/js/feedEngine/stages.js index b3c1dc76..bd8e2c0f 100644 --- a/js/feedEngine/stages.js +++ b/js/feedEngine/stages.js @@ -173,9 +173,9 @@ async function resolveTimestampWithResolvers({ return null; } - for (const resolver of resolvers) { + const promises = resolvers.map(async (resolver) => { if (typeof resolver !== "function") { - continue; + throw new Error("Resolver is not a function"); } try { @@ -183,12 +183,20 @@ async function resolveTimestampWithResolvers({ if (Number.isFinite(value)) { return Math.floor(value); } + throw new Error("Invalid timestamp value"); } catch (error) { - context?.log?.(`[${stageName}] resolve timestamp hook threw`, error); + if (error.message !== "Invalid timestamp value") { + context?.log?.(`[${stageName}] resolve timestamp hook threw`, error); + } + throw error; } - } + }); - return null; + try { + return await Promise.any(promises); + } catch (error) { + return null; + } } export function createResolvePostedAtStage({