I cannot explain why the exception is thrown, but the following is working in my local environment.
Since the example is Soap XML, I would suggest using the Soap DPH as the first DPH in the chain and then follow on with a Scriptable.
The function of the Soap DPH is to parse the XML and set the operation. There is no real reason to use a Scriptable for parsing XML manually.
The attached project ZIP file shows the differences.
Assume we have an input request containing XML as follows:
Sending the request to the example_withoutSoapDPH.vsm running in ITR mode. Stop after the Listen Step and look at the Events tab.
The Scriptable DPH in the VSM places log messages showing the request and the body.
Running the example_withSoapDPH.vsm in ITR mode.
In this VSM, the SOAP DPH fires first and is followed by a Scriptable that simply displays what the SOAP DPH created.
Stop the previous service and run this service in ITR mode.
Stop after the Listen Step and review the Events tab.
The highlighted displays below show that the operation and arguments were parsed from the XML by the Soap DPH.
The Scriptable in both VSMs accesses the lisa_vse_request object and retrieves different things from them.