# File lib/ruote/receiver/base.rb, line 76
    def flunk(workitem, error_class_or_instance_or_message, *err_arguments)

      err = error_class_or_instance_or_message

      if err.is_a?(String)
        err = RuntimeError.new(err)
        err.set_backtrace(caller)

      elsif err.is_a?(Class)
        err = err.new(*err_arguments)
        err.set_backtrace(caller)
      end

      workitem = workitem.h if workitem.respond_to?(:h)

      @context.storage.put_msg(
        'raise',
        'fei' => workitem['fei'],
        'wfid' => workitem['wfid'],
        'msg' => {
          'action' => 'dispatch',
          'fei' => workitem['fei'],
          'participant_name' => workitem['participant_name'],
          'participant' => nil,
          'workitem' => workitem
        },
        'error' => {
          'class' => err.class.name,
          'message' => err.message,
          'trace' => err.backtrace
        })
    end