code: func (db *baseDB) Begin() (*Tx, error) {
  	tx := &Tx{
  		db:  db.withPool(pool.NewSingleConnPool(db.pool)),
  		ctx: db.db.Context(),
  	}
  
  	err := tx.begin()
  	if err != nil {
  		tx.close()
  		return nil, err
  	}
  
  	return tx, nil
  }
docs: // Begin starts a transaction. Most callers should use RunInTransaction instead.