When is coroutine better than task.defer/spawn

I’ve never learned coroutines and have always used task.defer and task.spawn.

Is there any case where coroutines are just better? Otherwise why aren’t they deprecated?