/// <summary>
 /// Start listening for messages and handle them using the specified callback function.
 /// </summary>
 /// <param name="receiver">The receiver to start.</param>
 /// <param name="onMessageReceivedAsync">A function that is invoked when a message is received.</param>
 public static void Start(this IReceiver receiver, OnMessageReceivedAsyncDelegate onMessageReceivedAsync)
 {
     if (onMessageReceivedAsync == null)
     {
         throw new ArgumentNullException(nameof(onMessageReceivedAsync));
     }
     receiver.Start(new AsyncDelegateMessageHandler(onMessageReceivedAsync));
 }
 public AsyncDelegateMessageHandler(OnMessageReceivedAsyncDelegate onMessageReceivedAsync) =>