If one day someone understand my requirement and find this thread, please note the solution is to create S3 as a Java service, and to put this:
Values v = new Values();
v.setValue("from", "$flow");
v.setValue("signal", "failure");
v.setValue("failure-message", "sendException: " + IDataUtil.getString(pipeline.getCursor(), "msg"));
FlowExit exit = new FlowExit(v);
InvokeState.getCurrentState().getFlowState().setExit(exit);
This way, the error is thrown though S1. It is the only possible solution (InvokeState.getCurrentState().getFlowState().getParent().setError(error) works only in debug mode).
Have fun.
#webMethods#Integration-Server-and-ESB