code: public function transaction(callable $callback, $isolationLevel = null)
      {
          $transaction = $this->beginTransaction($isolationLevel);
          $level = $transaction->level;
  
          try {
              $result = call_user_func($callback, $this);
              if ($transaction->isActive && $transaction->level === $level) {
                  $transaction->commit();
              }
          } catch (\Exception $e) {
              $this->rollbackTransactionOnLevel($transaction, $level);
              throw $e;
          } catch (\Throwable $e) {
              $this->rollbackTransactionOnLevel($transaction, $level);
              throw $e;
          }
  
          return $result;
      }
docs: Executes callback provided in a transaction.
  
  @param callable $callback a valid PHP callback that performs the job. Accepts connection instance as parameter.
  @param string|null $isolationLevel The isolation level to use for this transaction.
  See [[Transaction::begin()]] for details.
  @throws \Exception|\Throwable if there is any exception during query. In this case the transaction will be rolled back.
  @return mixed result of callback function