code: public void beginTransactionWithListenerNonExclusive(
              com.couchbase.lite.internal.database.sqlite.SQLiteTransactionListener transactionListener) {
          beginTransaction(transactionListener, false);
      }
docs: Begins a transaction in IMMEDIATE mode. Transactions can be nested. When
  the outer transaction is ended all of the work done in that transaction
  and all of the nested transactions will be committed or rolled back. The
  changes will be rolled back if any transaction is ended without being
  marked as clean (by calling setTransactionSuccessful). Otherwise they
  will be committed.
  <p>
  Here is the standard idiom for transactions:
  
  <pre>
  db.beginTransactionWithListenerNonExclusive(listener);
  try {
  ...
  db.setTransactionSuccessful();
  } finally {
  db.endTransaction();
  }
  </pre>
  
  @param transactionListener listener that should be notified when the
  transaction begins, commits, or is rolled back, either
  explicitly or by a call to {@link #yieldIfContendedSafely}.