module DRb::DRbServer::InvokeMethod18Mixin

def perform_with_block

def perform_with_block
  @obj.__send__(@msg_id, *@argv) do |*x|
    jump_error = nil
    begin
      block_value = block_yield(x)
    rescue LocalJumpError
      jump_error = $!
    end
    if jump_error
      case jump_error.reason
      when :break
        break(jump_error.exit_value)
      else
        raise jump_error
      end
    end
    block_value
  end
end