public async Task <bool> TryUpdateAsync(TKey key, TValue oldValue, TValue newValue)
        {
            var(keyData, oldValueData, newValueData) = ToSafeData(key, oldValue, newValue);

            var requestMessage  = TransactionalMapReplaceIfSameCodec.EncodeRequest(Name, TransactionId, ContextId, keyData, oldValueData, newValueData);
            var responseMessage = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CAF();

            return(TransactionalMapReplaceIfSameCodec.DecodeResponse(responseMessage).Response);
        }
        public virtual bool Replace(TKey key, TValue oldValue, TValue newValue)
        {
            var keyData      = ToData(key);
            var oldValueData = ToData(oldValue);
            var newValueData = ToData(newValue);

            var request = TransactionalMapReplaceIfSameCodec.EncodeRequest(GetName(), GetTransactionId(), GetThreadId(),
                                                                           keyData, oldValueData, newValueData);

            return(Invoke(request, m => TransactionalMapReplaceIfSameCodec.DecodeResponse(m).response));
        }