Apexトランザクションの定義について、理解を深めるため、メモしておきます。
このエラーはさぞなく見覚えはあるでしょ。
解釈:データ作成/更新する処理でCommit前に同期処理APIを呼び出すと、このエラーに引っかかる。
よって、「同一のトランザクション内にAPIコールする時、必ずcommitの後に実行する」とSFDCの制限がある。
Apex開発ガイドと覗いたら、こんな言葉があった。
”Apex トランザクションは、1 つの単位として実行される一連の操作を表します。トランザクションの実行には、すべての DML 操作が正常に完了することが求められます。”
データ作成/更新する処理でCommit前に同期処理APIは許されないが、非同期APIのコールがオッケー👌。
よって、仮設:非同期処理が新しいトランザクションを始まったから、エラーに引っかからなかった。
実際に試験すると、確かに、非同期処理のブロック中にApex制限がフラッシュされた。