Make better use of defer.Fail for returning deferred errors.