I think solving the context problem is key. I've seen a few proposals for go error handling that address the verbosity while also allowing you to provide proper local context in a terse and readable way. I'm hoping something like that makes its way into go eventually.