(maybe this is really gel-rust)
_localdev:main> start transaction;
OK: START TRANSACTION
_localdev:main[tx]> select <str>$0;
Parameter <str>$0: aaaa
gel error: TransactionError: current transaction is aborted, commands ignored until end of transaction block
Maybe the problem is that we always try an execute first instead of parse, and that produces a real error...