public async Task SetAsync(TKey key, TValue value)
        {
            var(keyData, valueData) = ToSafeData(key, value);

            var requestMessage  = TransactionalMapSetCodec.EncodeRequest(Name, TransactionId, ContextId, keyData, valueData);
            var responseMessage = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CfAwait();

            _ = TransactionalMapSetCodec.DecodeResponse(responseMessage);
        }
        public virtual void Set(TKey key, TValue value)
        {
            var keyData   = ToData(key);
            var valueData = ToData(value);

            var request = TransactionalMapSetCodec.EncodeRequest(GetName(), GetTransactionId(), GetThreadId(),
                                                                 keyData, valueData);

            Invoke(request);
        }
        public async Task SetAsync(TKey key, TValue value, TimeSpan timeToLive)
        {
            var(keyData, valueData) = ToSafeData(key, value);
            var timeToLiveMilliseconds = timeToLive.CodecMilliseconds(-1);

            // FIXME TIME TO LIVE??
            var requestMessage  = TransactionalMapSetCodec.EncodeRequest(Name, TransactionId, ContextId, keyData, valueData);
            var responseMessage = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CAF();

            _ = TransactionalMapSetCodec.DecodeResponse(responseMessage);
        }