Rich error type for golang