def WaitProcessing(obj, eng, callbacks, exc_info):
        """Take actions when WaitProcessing is raised.

        ..note::
            We're essentially doing HaltProcessing, plus `obj.set_action` and
            object status `WAITING` instead of `HALTED`.

            This is not present in TransitionActions so that's why it is not
            calling super in this case.
        """
        e = exc_info[1]
        obj.set_action(e.action, e.message)
        obj.save(status=eng.object_status.WAITING,
                 callback_pos=eng.state.callback_pos,
                 id_workflow=eng.uuid)
        eng.save(WorkflowStatus.HALTED)
        eng.log.warning("Workflow '%s' waiting at task %s with message: %s",
                        eng.name, eng.current_taskname or "Unknown", e.message)
        db.session.commit()

        # Call super which will reraise
        TransitionActions.HaltProcessing(
            obj, eng, callbacks, exc_info
        )
Take actions when WaitProcessing is raised.

        ..note::
            We're essentially doing HaltProcessing, plus `obj.set_action` and
            object status `WAITING` instead of `HALTED`.

            This is not present in TransitionActions so that's why it is not
            calling super in this case.