func doIter()

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
		}
	}
}