Following Simon M's "take newCAF() out from sm_mutex" patch