SIGN IN SIGN UP

Return 500 instead of hanging on unexpected handler errors

Before this change, all async route handlers were registered with the
pattern `void this.handler(rq, rs)`. Any unhandled rejection from those
handlers was silently discarded, leaving the HTTP request to hang
indefinitely with no response sent to the client.

Add a private `handle()` helper that wraps every async route handler
with `.catch(next)`, routing any unhandled rejection into Express's
error handler which responds with a 500. No unexpected error can
silently swallow a request any more.

Regression tests added covering synchronous throws and rejected promises
from underlying operations across vault and periodic route families.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A
Adam Coddington committed
eceb66fdf7ec879b662e8f5a68f2d60c90fd2985
Parent: 0f9ed50