protected override void Send(Message m, System.Action<Message> done)
        {
            MessageId++;

            var x = new AsyncProxy.Info { m = m, done = done};

            x.m.ToServerMessageId = MessageId;

            Console.WriteLine("sending message with id : " + x.m.ToServerMessageId);


            Queue.Add(x);
        }
        private void AsyncInvoke(ExpandoMember vx, ExpandoMember vm, Message m)
        {
            Console.WriteLine("server will call: " + vx.Name);

            var a = new List<object>();

            bool r = false;

            foreach (ExpandoMember v in vx.Self.GetFields())
            {
                if (v.Name == AsyncProxy.ReturnValue)
                    r = true;
                else
                    a.Add(v.Self.To<object>());

            }

            var retval = vm.Invoke(a.ToArray());

            if (r)
            {
                vx.Self.SetMember(AsyncProxy.ReturnValue, retval);
            }

            var x = new AsyncProxy.Info { m = m };

            //Console.WriteLine("sending server-message with id : " + x.m.ToServerMessageId);

            Queue.Add(x);
        }