code: func Wrap(e interface{}, skip int) *Error {
  	if e == nil {
  		return nil
  	}
  
  	var err error
  
  	switch e := e.(type) {
  	case *Error:
  		return e
  	case error:
  		err = e
  	default:
  		err = fmt.Errorf("%v", e)
  	}
  
  	stack := make([]uintptr, MaxStackDepth)
  	length := runtime.Callers(2+skip, stack[:])
  	return &Error{
  		Err:   err,
  		stack: stack[:length],
  	}
  }
docs: // Wrap makes an Error from the given value. If that value is already an
  // error then it will be used directly, if not, it will be passed to
  // fmt.Errorf("%v"). The skip parameter indicates how far up the stack
  // to start the stacktrace. 0 is from the current call, 1 from its caller, etc.