Skip to content
  • Patrick Steinhardt's avatar
    structerr: Convert `New()` to return `Unknown` error codes · c7e2b60d
    Patrick Steinhardt authored
    The `structerr.New()` constructor returns errors with an `Internal`
    code. This makes for a somewhat weird interface though: `New()` shall be
    used in cases where the actual error condition is not quite clear, but
    by already setting an `Internal` error code we'll ultimately propagate
    that code even if an ancestor in the callchain would know better.
    
    Adjust the function to instead return `Unknown` errors. Together with
    the change to always override `Unknown` errors with more specific ones,
    this makes for a new calling convention of how to construct errors:
    always use `New()`, unless you know the actual root cause. Like this,
    the first caller that knows more about the root cause will override the
    `Unknown` error.
    
    Document this calling convention.
    c7e2b60d