To not make it too ugly, let’s change {{transactional()}} to accepting an abitrary callback and invoke that with {{call_user_func()}}. That way we can introduce a single {{public doRecordSuccess()}} and don’t need to make everything public.