My changes above will simplify the needed tests as well.  You should be able to setup an async, without it running, and make sure that calling restart craps out.  You should then be able to make a running one, and make sure calling restart restarts it.  Then, you should be able to run one, and make sure you can't restart it if it has been restarted.