Coroutine delay never completes

I’m trying to use a coroutine call inside an OnTriggerEnter function to reload the level after the player destroys the enemy.
The first debug message prints, but the second never does. Any ideas?

StartCoroutine(WaitReload());

IEnumerator WaitReload() {
	Debug.Log ("Reloading...");
	yield return new WaitForSeconds(3); //waits 3 seconds
	Debug.Log ("Reloading now!");
	Application.LoadLevel(Application.loadedLevel);
}

void OnTriggerEnter(Collider other){
if(other.tag == “Something”){
Destroy(other.gameObject);
Destroy(gameObject);
StartCoroutine(WaitReload());
}
}

 IEnumerator  WaitReload() {
     Debug.Log ("Reloading...");
         yield return new WaitForSeconds(3);
         Debug.Log ("Reloading now!");
 
     Application.LoadLevel(Application.loadedLevel);
 }

The trigger method starts the coroutine, so you get the first debug line, then the trigger method destroys the object so the coroutine goes with it.

Keep the object alive, it will be destroyed during the loading anyway, or if you need to destroy the object, start the coroutine from another object.