https://medium.com/better-programming/clean-code-applied-to-javascript-part-5-exceptions-d46e07691c19