From Rust to TypeScript
This article is unconvincing.From the article: Compared to the first snippet, this one is harder to debug. It seems so because 1.) You don't know that callMe will throw an error or not. 2.) If it throws an exception you will not know what is the type of the exception. The more modular your code is, the harder it is to debug exceptions.This is only a problem with unchecked exceptions as seen in TypeScript and C#. Checked exceptions are the solution.The problem with error code return is tediousness:  int foo() {
     int result = bar();
     if (result == ERROR_CODE)
        return result;
     int result2 = baz();
     if (result2 == ERROR_CODE)
        return result2;
     int result3 = bazz();
     if (result3 == ERROR_CODE)
        return result3;
  }

Compare to the same code written in a language that supports checked exceptions:  int foo() throws SomeException {
     int result = bar();
     int result2 = baz();
     int result3 = bazz();
  }

In the first version the logic is interspersed with error handling, which makes the logic hard to see.How do people using Go and other languages that don't have exceptions solve this reduced readability problem?