Threads live in the cloud. Start on your desktop, check in from your phone, finish in the browser.
Added a sliding-window limiter in lib/rate-limit.ts, keyed by the Stripe account. Over the limit returns 429 with a Retry-After header.
lib/rate-limit.ts
Over the limit returns 429 with a Retry-After header.
Done — webhook.test.ts sends 61 requests and asserts the last one is rejected.
webhook.test.ts