anchor.diff:      {ok, db_value()} | db_txn_error().
   
   transaction(_Fun, 0, _Opts) ->
  -    ok = txn_abort(),
       {error, {transaction_failed, retry_limit_reached}};
  +
   transaction(Fun, Retries, Opts) ->
       case txn_begin(Opts) of
           ok ->
               try Fun() of
                   abort ->
  +                    error_logger:info_msg("function requested abort"),
                       ok = txn_abort(),
                       {error, transaction_aborted};
   
  
positive.code:                     transaction(Fun, R);
  
                  _ : Reason ->
                      ok = txn_abort(),
                      {error, {transaction_failed, Reason}}
              end;
  
negative.code:         ok ->
              receive
                  ok -> ok;
                  {error, no_txn} -> ok;
                  {error, Reason} -> {error, decode_rc(Reason)}
              end;
  
  