title: Async Delegate - What is proper approach
body: <p>Ok, so, I'm almost there and need just a small bit of advise to get over this hump!  So, the reason i asked this questoin <a href="https://stackoverflow.com/questions/50781403/async-delegate-what-is-proper-syntax?noredirect=1#comment88569570_50781403">Async delegate - What is proper syntax?</a> is because I'm trying to call a delegate function asynchronously (using await ...).</p>
  
  <p>So, here I have a class which uses a library which accepts a delegate.  The library calls the delegate when triggered.  It looks something like this.</p>
  
  <pre><code>Example.Question.Base{
  public static class Consumer{
      private delegate bool Redo();
      private static Redo callbackFunction;
  
      public static async Task&lt;T&gt; Go(){
          // Do some stuff ...
  
          // now I want to set up my delegate so this library 
          // I'm using can call back my delgate function when 
          // an event occurs that it manages
          callbackFunction = NonAsync;
          SomeLibrary someLibrary = new SomeLibary();
          await someLibrary.SomeMethod(callbackFunction);
      }
  
      public static bool NonAsync()
      {
          // Do some work ...
          return false;
      }
  }
  
  // so now the callbackFunction is called from 
  // the libary when some event occurs.  So that 
  // means the actual method "NonAsync()" is called!
  } 
  </code></pre>
  
  <p>The logic in the library that calls back this delgate  looks like this</p>
  
  <pre><code>Example.Question.Library{
  public ...{
      public ... SomeMethod(Delegate func){
          func.DynamicInvoke();
      }
  }
  }
  </code></pre>
  
  <p>this works just fine.  What I need is to be able to call the Delegate from the library asynchronously.</p>
  
  <p>need some help getting there</p>
  
  <p>So i want something that looks like this...</p>
  
  <p>...from the library which calls the delegate...</p>
  
  <pre><code>public ... SomeMethod(Delegate func){
          await func.DynamicInvoke();
      }
  </code></pre>
  
  <p>... from the consumer of the library which defines the delegate ...</p>
  
  <pre><code>Example.Question.Base{
      public static class Consumer{
          // ...
  
          public static async Task&lt;T&gt; Go(){
              // ...
              callbackFunction = await Async;
              // ...
          }
  
          public static async Task&lt;bool&gt; Async()
          {
              // Do some work ...
              return await Task.FromResult&lt;bool&gt;(false);
          }
      }
  }
  </code></pre>
  
  <p>But the issue is I get a compiler error saying "Cannot await 'method group'"</p>
  
  <p><a href="https://i.stack.imgur.com/O81ee.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/O81ee.png" alt="enter image description here"></a></p>