internal Task UnsubscribeAsync(int eventInterfaceId, Guid subscriberId)
        {
            var headers = new ActorMessageHeaders
            {
                ActorId     = this.actorId,
                InterfaceId = ActorEventSubscription.InterfaceId,
                MethodId    = ActorEventSubscription.UnSubscribeMethodId,
            };

            var serviceMessageHeaders = headers.ToServiceMessageHeaders();

            serviceMessageHeaders.InterfaceId = ActorEventSubscription.InterfaceId;
            serviceMessageHeaders.MethodId    = ActorEventSubscription.UnSubscribeMethodId;

            var msgBody = new ActorMessageBody()
            {
                Value = new EventSubscriptionRequestBody()
                {
                    eventInterfaceId = eventInterfaceId,
                    subscriptionId   = subscriberId
                }
            };

            var msgBodyBytes = SerializationUtility.Serialize(ActorEventSubscription.Serializer, msgBody);

            return(this.InvokeWithRetryAsync(
                       client => client.RequestResponseAsync(serviceMessageHeaders, msgBodyBytes),
                       CancellationToken.None));
        }
        internal Task <byte[]> InvokeAsync(ActorMessageHeaders headers, byte[] requestMsgBody, CancellationToken cancellationToken)
        {
            var serviceMessageHeaders = headers.ToServiceMessageHeaders();

            serviceMessageHeaders.InterfaceId = ActorMessageDispatch.InterfaceId;

            return(this.InvokeAsync(
                       serviceMessageHeaders,
                       requestMsgBody,
                       cancellationToken));
        }