[fix] defer and async, make sure we exit