we have wasted tens of man-hours hunting for a bug that didn't
manifest in logs due to that custom formatter. %#v basically went
directly to stringer without embedding type information (the
fallthrough, line 135 in the link you linked). it was difficult to
hunt and lead us to believe that custom formatters should be avoided.
in the end we switched away from pkg/errors using the new stuff
available as standard in go 1.14. the other lesson we learned is that
it's better to be explicit than implicit. wrapping nil errors with
.Wrap returning nil resulted in a lot of assumptions that confused
coders not experienced with that package. when we switched to %w
errors popped up where not expected because the explicitness of the %w
flag doesn't allow a nil error to be used with it.
nothing against the package, it served us well for a very long time.
but it was time for a change.