Unity’s coroutines are very useful as they allow you to write easy asynchronous code. Though they have their limit on how much you can control them. I wanted to be able to Play, Pause, Resume and Stop coroutines.
I created the class KnCoroutine which handles those functionalities. You can create a KnCoroutine with a MonoBehaviour or you can get one from the KnCoroutineManager.
KnCoroutine coroutine = KnCoroutineManager.Instance.Create();