yield WaitForSeconds() not functioning as expected

I know this question has been asked many times, but I’m pretty sure I’ve done everything correctly. I’ve used it correctly in the past but for some reason this code is not working.

    IEnumerator Start () {
        		
        		/*aGuiChildren = GetComponentsInChildren<GUIText>();
        		// Text into a new array slot
        		foreach(GUIText s in aGuiChildren)
        		{
        			saBriefText. = aGuiChildren.text;
        			aGuiChildren.text = "";
        		}*/
        		
        		TextPool = new string[4];
        		TextPool[0] = "In the beginning there was text.";
        		TextPool[1] = "And then there was a mech.";
        		TextPool[2] = "And there were a lot of pew pews and explosions";
        		TextPool[3] = "This is their story.";
        		
        		GUILines = GetComponentsInChildren<GUIText>( false );	
        		SetupGUITextSpacing();
        		
        		yield return StartCoroutine( SetText() );
        		// Never gets here
        	}

public IEnumerator SetText()
	{

		
		ClearText();
		int i = 0;
		foreach( string str in TextPool )
		{
			foreach( char c in str )
			{
				
				// never gets past this line
				//Works fine with yield return 0; instead, but obviously does not wait.
				yield return new WaitForSeconds(1);
				
				GUILines*.text += c;				*
  •  	}*
    
  •  	++i;*
    
  •  }*
    
  • }*
    If I instead use this code, It functions as expected, minus the waiting.
    IEnumerator Start () {

_ /*aGuiChildren = GetComponentsInChildren();_

  •  // Text into a new array slot*
    
  •  foreach(GUIText s in aGuiChildren)*
    
  •  {*
    
  •  	saBriefText. = aGuiChildren.text;*
    
  •  	aGuiChildren.text = "";*
    

_ }*/_

  •  TextPool = new string[4];*
    
  •  TextPool[0] = "In the beginning there was text.";*
    
  •  TextPool[1] = "And then there was a mech.";*
    
  •  TextPool[2] = "And there were a lot of pew pews and explosions";*
    
  •  TextPool[3] = "This is their story.";*
    
  •  GUILines = GetComponentsInChildren<GUIText>( false );	*
    
  •  SetupGUITextSpacing();*
    
  •  yield return StartCoroutine( SetText() );*
    
  •  // gets here after function finishes*
    
  • }*

public IEnumerator SetText()

  • {*

  •  ClearText();*
    
  •  int i = 0;*
    
  •  foreach( string str in TextPool )*
    
  •  {*
    
  •  	foreach( char c in str )*
    
  •  	{*
    
  •  		//Works fine* 
    
  •  		yield return 0;*
    

_ GUILines*.text += c; _
_
}_
_
++i;_
_
}_
_
}*_

It works as expected, assuming you have the TimeScale set above 0.

No bug existed. Code tested and works. Was an external issue (time scale == 0)