code: func ErrorEqual(err1, err2 error) bool {
  	e1 := errors.Cause(err1)
  	e2 := errors.Cause(err2)
  
  	if e1 == e2 {
  		return true
  	}
  
  	if e1 == nil || e2 == nil {
  		return e1 == e2
  	}
  
  	te1, ok1 := e1.(*Error)
  	te2, ok2 := e2.(*Error)
  	if ok1 && ok2 {
  		return te1.class == te2.class && te1.code == te2.code
  	}
  
  	return e1.Error() == e2.Error()
  }
docs: // ErrorEqual returns a boolean indicating whether err1 is equal to err2.