I wanted to give more control to the caller, while improve ability to reason about the error, instead of hunting yet another nil pointer reference. I'm not entirely sure if this kind of defensive programming is advisable and/or Go idiomatic.