StartCoroutine in Collision unwork

Hi,everyone,I make a simply game for the Player touch by the Backteria will explosion, and Mission Fall Image will active , then
Player will be destroy , after 5 second load GameOver scene ,but now the question is StartCoroutine(Do());unwork , so I try to use Application.LoadLevel(LevelLoad); straightly , but unwork , too .
Does anyone have suggestions?

    using UnityEngine;
    using System.Collections;
    
    public class EatPlayer : MonoBehaviour {
    
    	public GameObject explosion;
    	public GameObject loadingImage;
    	public string LevelLoad; 
    
    	void OnCollisionEnter(Collision collider) {
    		if (collider.gameObject.name == "Backteria") {
    			StartCoroutine(Do());
    			Destroy(gameObject);
    			loadingImage.SetActive (true);
    			Instantiate(explosion, collider.transform.position, collider.transform.rotation);
    			}
    	}
    	IEnumerator Do () {
    		yield return new WaitForSeconds(5);
    		Debug.Log("hhhhhh");
    		Application.LoadLevel(LevelLoad);
    	}
    }

@meat5000 's comment is accurate, the issue here is that you are destroying the object, long before the coroutine would ever get to the log. Coroutines still require the object to exist to continue, destroy the object and the coroutine goes with it.