If a batch includes a distributed transaction that perform updates on a remote table, and this update fails, and there is a CATCH handler something goes very wrong, and SQL Server reports a level 18 error that cannot be caught in any outer CATCH handler. The error is reported to occur on the line for BEGIN CATCH.
When I have tested this, the error also occurred with OPENQUERY, but I have not seen it when calling remote stored procedures.
I should also say that I ran this test between two instances on the same computer. Since the repro is able to produce different results at repeated executions, there is likely to be a timing issue involved.
Probably there is something more that goes wrong in the TDS output, because the output
can be different from execution to execution.