fix async bug in ios crash waterfall

previously, we'd respond to the client's current callback and then start
the shutdown sequence. this opened up a situation where the client could
then call another command (say driver.quit) during shutdown, enabling
the possibility of two simultaneous shutdown flows causing undefined
behavior. this fix makes sure we don't respond to the client for a
command that caused a crash until we're done shutting down.