public async Task <bool> ConfirmAppendDataAsync(string subscriptionId, PwnedPasswordsTransaction transaction, CancellationToken cancellationToken = default)
    {
        try
        {
            Response <AppendTransactionEntity> transactionEntityResponse = await _transactionTable.GetEntityAsync <AppendTransactionEntity>(subscriptionId, transaction.TransactionId, cancellationToken : cancellationToken).ConfigureAwait(false);

            if (!transactionEntityResponse.Value.Confirmed)
            {
                transactionEntityResponse.Value.Confirmed = true;
                Response?updateResponse = await _transactionTable.UpdateEntityAsync(transactionEntityResponse.Value, transactionEntityResponse.Value.ETag, cancellationToken : cancellationToken).ConfigureAwait(false);

                _log.LogInformation("Subscription {SubscriptionId} successfully confirmed transaction {TransactionId}. Queueing data for blob updates.", subscriptionId, transaction.TransactionId);
                return(true);
            }

            // We've already confirmed this transaction.
            return(false);
        }
        catch (RequestFailedException e) when(e.Status == 404)
        {
            throw new ArgumentOutOfRangeException("Transaction id not found.", e);
        }
        catch (RequestFailedException e) when(e.Status == StatusCodes.Status409Conflict)
        {
            throw new ArgumentException("Transaciton has already been updated.", e);
        }
        catch (RequestFailedException e)
        {
            _log.LogError(e, "Error looking up/updating transaction with id = {TransactionId} for subscription {SubscriptionId}.", transaction.TransactionId, subscriptionId);
            throw new InvalidOperationException("Error confirming transaction.", e);
        }
    }
    public async Task <PwnedPasswordsTransaction> InsertAppendDataAsync(string subscriptionId, CancellationToken cancellationToken = default)
    {
        var transaction = new PwnedPasswordsTransaction {
            TransactionId = Guid.NewGuid().ToString()
        };
        await _transactionTable.AddEntityAsync(new AppendTransactionEntity { PartitionKey = subscriptionId, RowKey = transaction.TransactionId, Confirmed = false }, cancellationToken).ConfigureAwait(false);

        _log.LogInformation("Subscription {SubscriptionId} created a new transaction with id = {TransactionId}.", subscriptionId, transaction.TransactionId);
        return(transaction);
    }