When AsyncMode is enabled (via environment entries of deployment descriptor) then errors thrown from action nodes will be handled but the flow continues.
The reason for that is that lock is kept on process instance and thus the error handling (which is executed in background due to AsyncMode) is not able to perform it's work. Instead the control is returned to the failing node which assumes that error was already handled and can move on regular path. This leads to completing node that thrown exception and thus going to the next one in line. This should be improved to avoid moving on, by canceling the failing node just before handling the error.