Time Delay isnt working

I added a time delay to happen after it say congratulations and before it moves onto the next level. It doesn’t seem to be working. Is there something i did wrong? Thank you!

public class PlayerController : MonoBehaviour 

{

	public float speed;
	public GUIText countText;
	public GUIText winText;
	private int count;
	public int levelNumber;


	void Start ()
	{
		count = 0;
		levelNumber = 1;
		SetCountText ();
		winText.text ="";
		StartCoroutine (Timer.Enumerator ());

	}


	void OnTriggerEnter(Collider other)
	{
		if (other.gameObject.tag == "PickUp") 
		{
			other.gameObject.SetActive(false);
			count = count + 1;
			SetCountText ();

		}
	}

	void SetCountText ()
	{
		countText.text = "Count: " + count.ToString ();
		if (count >= 1)   
		{
			levelNumber = levelNumber + 1;
			winText.text = "CONGRAGULATIONS!";
			IEnumerator TimerEnumerator()
			{
				yield return new WaitForSeconds(3);
			}
			Debug.Log ("Level Number: " + levelNumber);
			Application.LoadLevelAsync(Application.loadedLevel + 1);
		}
	}
}

Try to split your logic in more functions, you are doing too many nested operations, that adds complexity and makes it hard to maintain:

void OnTriggeEnter(Collider other)
{
	if(other.gameObject.tag == "PickUp")
	{
		AddCount(1);
	}
}

void AddCount(int val)
{
	count += val;
	countText.text = "Count: " + count.ToString();

	if(count >= 1)
	{
		FinishLevel();
	}
}

void FinishLevel()
{
	levelNumber = levelNumber + 1;
    winText.text = "CONGRAGULATIONS!";

    Invoke("LoadNextLevel", 3);
}

void LoadNextLevel()
{
	Debug.Log ("Level Number: " + levelNumber);
    Application.LoadLevelAsync(Application.loadedLevel + 1);
}