Do you think it makes the code easier to maintain/understand making "function_call!"  always encapsulate "function_call" and not vice-versa? I'm genuinely curious. This doubt could very well originate from my non-Erlang background. Is this a FP / Erlang convention I'm not aware of?

I assumed raising an exception where the issue happens and waiting until the "end" for the conversion from a caught exception to {:error, "error message"} would improve the code readability by allowing to interrupt the execution of the flow immediately, and not having to do pattern matching like this: https://github.com/jamesarosen/elixir-json/blob/d3e7781dcb6154cf69d646239a0bdab207e576d1/lib/json/decode.ex#L15

Thanks! :metal: