public override async Task DeliverMessageAsync(IEntityDescriptor destination, IMessage message)
        {
            Logger.Instance.Log("AsyncDispatcher", "DeliverMessageAsync", "Delivering {0} to {1}", message, destination);
            this.MessageCount++;
            var messageAndDestination = new MessageWithDestination
            {
                //Source = message.Source,
                Destination = destination,
                Message = message
            };
            var entityProcessor = await GetEntityWithProcessorAsync(messageAndDestination.Destination);
                        
            if (entityProcessor != null)
            {
                await entityProcessor.ReceiveMessageAsync(
                    messageAndDestination.Message.Source, 
					messageAndDestination.Message);
            }
        }
 public override void DeliverMessage(IEntityDescriptor destination, IMessage message)
 {
     this.MessageCount++;
     Task.Factory.StartNew(() =>
     {
         var messageAndDestination = new MessageWithDestination
         {
             //Source = message.Source,
             Destination = destination,
             Message = message
         };
         Console.WriteLine("Enqueueing {0}", messageAndDestination);
         lock (this.Queue)
         {
             this.Queue.Enqueue(messageAndDestination);
         }
         //entity.ReceiveMessage(message.Source, message);
         //}
         //return messageAndDestination;
     });
     //.ContinueWith((mad) => ProcessNext(mad.Result));
 }