Sometimes you have to jump into the source of some dependency (or even OTP itself) to really understand what's causing the error.
Thankfully, Erlang and Elixir tend to make this a lot less painful, in no small part due to their respective declarative/functional programming traits.