code: func cause(e error) error {
  	type causer interface {
  		Cause() error
  	}
  	for {
  		cause, ok := e.(causer)
  		if !ok {
  			break
  		}
  		c := cause.Cause()
  		if c == nil {
  			break
  		}
  		e = c
  	}
  	return e
  }
docs: // Cause returns the underlying cause of the error, if possible.
  // An error value has a cause if it implements the following
  // interface:
  //
  //     type causer interface {
  //            Cause() error
  //     }
  //
  // If the error does not implement Cause, the original error will
  // be returned. If the error is nil, nil will be returned without further
  // investigation.