BpmData form feedback has been received from client but not processed by server code

I’m getting the exact same error described in this thread:

Only issue is I am not calling MasterUpdate or Update. I can’t see any way I am creating an infinite loop. I just set a context variable or raise and exception, depending on what button they press. What else could be causing this issue? I tried disabling all other BPM’s for the SalesOrder BO but the error persists.

Summary
Business Layer Exception

BpmData form feedback has been received from client but not processed by server code

Exception caught in: Epicor.ServiceModel

Error Detail 
============
Correlation ID:  1ce7f428-1cd9-4c31-ae1f-cad95925fd55
Description:  BpmData form feedback has been received from client but not processed by server code
Program:  Epicor.Customization.BPM.dll
Method:  FinalizeBpmContextUsage
Line Number:  271
Column Number:  21

Client Stack Trace 
==================
   at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)
   at Erp.Proxy.BO.SalesOrderImpl.MasterUpdate(Boolean lCheckForOrderChangedMsg, Boolean lcheckForResponse, String cTableName, Int32 iCustNum, Int32 iOrderNum, Boolean lweLicensed, Boolean& lContinue, String& cResponseMsg, String& cCreditShipAction, String& cDisplayMsg, String& cCompliantMsg, String& cResponseMsgOrdRel, String& cAgingMessage, SalesOrderDataSet ds)
   at Erp.Adapters.SalesOrderAdapter.MasterUpdate(Boolean lCheckForOrderChangedMsg, Boolean lcheckForResponse, String cTableName, Int32 iCustNum, Int32 iOrderNum, Boolean lweLicensed, Boolean& lContinue, String& cResponseMsg, String& cCreditShipAction, String& cDisplayMsg, String& cCompliantMsg, String& cResponseMsgOrdRel, String& cAgingMessage)
   at Erp.UI.App.SalesOrderEntry.Transaction.Update()

I did a trace. MasterUpdate is showing up twice. If I turn off the BPM, it only shows up once. But I am not calling MasterUpdate or Update anywhere in this BPM. I added I message box right after the BPM form, it does not display, the error message happens before that.

I’m super confused…