def method_missing(*args, &block)
      Thread.pass until defined?(@result)
      
      case @result
      when Exception
        def self.method_missing(*args, &block); raise @result; end
      else
        def self.method_missing(*args, &block); @result.send(*args, &block); end
      end
      
      self.method_missing(*args, &block)
    end
def method_missing(*args, &block)
      Thread.pass until defined?(@result)
      
      case @result
      when Exception
        def self.method_missing(*args, &block); raise @result; end
      else
        def self.method_missing(*args, &block); @result.send(*args, &block); end
      end
      
      self.method_missing(*args, &block)
    end
Allows the job to behave as the return value of the block.

 Accessing any method on the job will cause code to block
 until the job is completed.