Upon further debugging inside the marionette-listener.js, it looks like when sandbox_marionetteScriptFinished() is called, it will call sandbox_asyncComplete() with a commandId different than asyncTestCommandId. This turns it to a no-op :-/