Coroutines Bug? Unity 4.5

So the situation is i have two monobehaviours(object1 and object2)
object1 is running coroutine that waits for coroutine running on object2 and the problem is that when i call object2.StopAllCoroutine() object2 coroutine stops, but coroutine on object 1 does not resume

Example:

    public class RootObject: MonoBehaviour
    	{
            private CoroutineHost coroutineHost;
    		public void Start()
    		{
                var go = new GameObject();
                coroutineHost = go.AddComponent<CoroutineHost>();
                
                
                this.StartCoroutine(GamePlayRoutine());
                this.StartCoroutine(StopAllCoroutinesRoutine());
    		}
    
            public IContained<IGameplay> gameplay
            {
                get;
                set;
            }
    
            private IEnumerator GamePlayRoutine()
            {
                yield return coroutineHost.StartCoroutine(gameplay.contained.Run());
                Debug.Log("!!!!");
                gameplay.Dispose();
            }
    
            private IEnumerator StopAllCoroutinesRoutine()
            {
                yield return new WaitForSeconds(1.0f);
                Debug.Log("Killing Coroutines");
                coroutineHost.StopAllCoroutines();
            }
        }

In this example only Killing Coroutines is being printed, but never “!!!”

I don’t think its a bug, its probably a design decision.

If you force quit a program, do you expect it to (or it to be in a fit state to) return a value to its caller?

Its an odd case though!

I think to solve your problem you will want to make something like a EndGame method which will set a flag to let the coroutine end itself correctly, or just not nest the coroutine in the first place.