Minor nitpick.
Restrucured and cleaned up ScriptParser and fixed
ConcurrentModificationException.

Reorderd and clean up ScriptParser by renaming and reordering the
methods. Additionally extracted server and logger into instance
variables and made that last run* functions instance-function. So
there's no need anymore to drag those around.

There was a ConcurrentModificationException in runWaitForAsync, the
finally-clause would execute after the first cycle of the loop,
effectively clearing the list and interrupting the for-loop.
That only showed up if you had two or more commands pending.