/// <summary>
 /// Runs the event dispatcher and awaits for it to complete before returning the results for dispatched events asynchronously.
 /// </summary>
 /// <typeparam name="T">The return type.</typeparam>
 /// <param name="dispatcher">The dispatcher.</param>
 /// <param name="function">The function to call.</param>
 /// <returns>The <see cref="Task" /> object representing the asynchronous operation.</returns>
 public static Task <T> RunAndAwaitAsync <T>(this CoreDispatcher dispatcher, Func <T> function) =>
 dispatcher.RunAndAwaitAsync(CoreDispatcherPriority.Normal, function);
 /// <summary>
 /// Runs the event dispatcher and awaits for it to complete before returning the results for dispatched events asynchronously.
 /// </summary>
 /// <param name="dispatcher">The dispatcher.</param>
 /// <param name="asyncAction">The async action to call.</param>
 /// <returns>The <see cref="Task" /> object representing the asynchronous operation.</returns>
 public static Task RunAndAwaitAsync(this CoreDispatcher dispatcher, Func <Task> asyncAction) =>
 dispatcher.RunAndAwaitAsync(CoreDispatcherPriority.Normal, asyncAction);
 /// <summary>
 /// Runs the event dispatcher and awaits for it to complete before returning the results for dispatched events asynchronously.
 /// </summary>
 /// <typeparam name="T">The return type.</typeparam>
 /// <param name="dispatcher">The dispatcher.</param>
 /// <param name="asyncFunction">The async function to call.</param>
 /// <returns>The <see cref="Task" /> object representing the asynchronous operation.</returns>
 public static Task <T> RunAndAwaitAsync <T>(this CoreDispatcher dispatcher, Func <IAsyncOperation <T> > asyncFunction) =>
 dispatcher.RunAndAwaitAsync(CoreDispatcherPriority.Normal, asyncFunction);