Try, catch, but don't throw

The standard try-catch-throw approach to error handling in TypeScript is not type-safe, making it difficult to explicitly ha