[AE/CA] - hold the enginelock when diddleing with the hal during garbagecollect and reuse the resume() function instead of duplicating code