- env.js: '…CHANGE-ME'-Platzhalter aus .env.example zählen als NICHT gesetzt.
Vorher galt sk_test_CHANGE-ME als echter Stripe-Key → echter API-Call mit
ungültigem Key → 401 → unhandledRejection → Server-Crash.
- billing.js: /checkout in try/catch → 502 statt Empty-Reply/Crash.
- index.js: globaler Express-Error-Handler + unhandledRejection-Guard, damit
ein einzelner async-Fehler nie den ganzen Prozess killt.
E2E verifiziert (Mock): register→checkout→instance, idempotent (1 sub/1 inst),
401 bei falschem PW, Server lebt nach allen Requests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>