Launches a coroutine that runs block after delay.
Cancelling the returned Job during the delay skips block entirely.