https://blog.orsinium.dev/posts/go/monads/
In search of better error handling for Go