public Task <string> StoreMessageAsync(string key, object payload, Type typeOfPayload, CancellationToken cancellationToken)
        {
            var serializedData = BinaryMessageSerializer.SerializePayload(payload, typeOfPayload);
            var proxy          = ActorProxy.Create <IStorageActor>(new ActorId($"{NameCompositionResolver.ExtractFlowInstanceIdFromFlowVariableKey(key)}"), StorageServiceUri);

            return(proxy.SaveMessageAsync(new ActorRequestContext(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString()), key, serializedData, cancellationToken));
        }
        public async Task <object> RetrieveMessageAsync(string key, Type typeOfPayload, CancellationToken cancellationToken)
        {
            var proxy   = ActorProxy.Create <IStorageActor>(new ActorId($"{NameCompositionResolver.ExtractFlowInstanceIdFromFlowVariableKey(key)}"), StorageServiceUri);
            var rawData = await proxy.RetrieveMessageAsync(new ActorRequestContext(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString()), key, false, cancellationToken);

            var data = rawData == null ? null : BinaryMessageSerializer.DeserializePayload(rawData, typeOfPayload);

            return(data);
        }