in txerr/txerr.go [83:109]
func doIter(in error, fn func(err error) bool) bool {
for {
if in == nil {
return true
}
if cont := fn(in); !cont {
return cont
}
switch err := in.(type) {
case withChild:
in = err.Cause()
case withChildren:
for _, sub := range err.Causes() {
if cont := doIter(sub, fn); !cont {
return cont
}
}
return true
default:
return true
}
}
}