Comment by jpc0
Another on this. If you abstract away code that throws or returns an error document that somehow.
The amount of times I've had to dig through 6 levels of abstraction to find what error gets returned in some edge case so I can catch and handle it gave me PTSD and gave me not invented here syndrome.