Fixed [the timeOut callback function never running] by removing the weak self capture in the timingOut function. Not sure why self is lost in the first place, but retain cycles are not a problem since they are only temporary anyways with asyncAfter(...) { }
Refer to: this issue