Skip to main content
Errors use a consistent envelope:

Error codes

Always branch on error.code, not error.message. Messages may change; codes are stable.