As alternative, I introduced “failables” into my programming language C3. It has the benefits of Go error handling but none of the downsides. I wrote two blog posts as I developed the idea:
https://dev.to/lerno/a-new-error-handling-paradigm-for-c3-2g...
https://dev.to/lerno/more-on-error-handling-in-c3-3bee
Composing calls is much easier for one, plus there is quite a bit of syntactic sugar to make things even smoother.