Add timeouts to checker requests to prevent hanging (#2379) master
* fix(server): prevent unhandled fetch rejections from crashing instances The no-wait monitor run path left its checker fetches unawaited with no rejection handler; on Deno an unhandled rejection terminates the process, which killed instances mid-request (fly-proxy 'connection closed before message completed'), triggered a restart storm, and hit the Fly machines API rate limit during the 07/13 incident. - attach .catch to the fire-and-forget checker fetches in the no-wait run path - add a global unhandledrejection handler in serve.ts as a safety net - bound every checker fetch with AbortSignal.timeout so slow checks can't pin API request concurrency - remove unused random-promise.ts Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0194CxKUxCoK3AgrUaqCLi9Y * fix(db): align selectMonitorSchema timeout prefault with ms column default The column stores milliseconds (default 45000) but the schema prefault was 45, so any monitor object exercising the fallback got a ~45ms budget. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0194CxKUxCoK3AgrUaqCLi9Y * chore: re-run CI (flaky ListStatusPages offset test) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0194CxKUxCoK3AgrUaqCLi9Y --------- Co-authored-by: Claude <noreply@anthropic.com>