Multierror is not nil unless you return ErrorOrNil, so this was causing non-nil errors to be returned when not expected. Also we need to ensure we only call handleWALRollback if a function exists.
Fixes #6671