title: Get result of a non generic task
body: <p>Is there a way to get the result of a <code>Task&lt;T&gt;</code> when it has been downcast to the non generic <code>Task</code>?
  I know this is possible to do with Reflection, but is there a way to do it without? Maybe by the use of <code>Expression</code>?
  Here's an example of what I want to do:</p>
  
  <pre><code>RunResult RunTask(Task task)
  {
      task.Wait();
  
      object result = ???;
  
      if (result is RunResult)
          return (RunResult)result;
  
      return RunResult.Success;
  }
  </code></pre>
  
  <p>I know that I can accomplish this by having a different overload, but I do not like that the behavior changes depending on which overload is picked.</p>
  
  <p>If the task doesn't have a result, then null is fine in this situation.</p>