coroutine for reloading

Ok so this has been driving me mad trying to get the enemy to reload using a coroutine.
but it just seems to run as loop inside the coroutine. and uses all the clips at once.

void Reload()
	{
		StartCoroutine (ReloadDelay());
		
	}

IEnumerator ReloadDelay()
{
	yield return new WaitForSeconds(5.0f);
	Debug.Log("waiting");
		
		//StartCoroutine (ReloadDelay());
		
		if(Clip > 0)
		{
	
		BulletsLeft = BulletPerClip;
			Clip--;
		
		PlayReloadAudio();
		caseCont = 2;
	}

Coroutines are “fire and forget” creatures: you start a coroutine and your code continues almost immediately - the coroutine returns when the first yield is executed, and keeps running in the background each frame. If you call Reload again before the current coroutine has finished, a new one is started. The easiest way to avoid this requires a boolean flag: it’s set at the coroutine beginning and reset at the end, and you must only start a new coroutine when the flag is false:

bool reloading = false; // flag indicating "I'm reloading now!"

void Reload(){
    // only reload again if the previous coroutine has ended:
    if (!reloading) StartCoroutine (ReloadDelay());
}

IEnumerator ReloadDelay(){
    reloading = true; // signal "I'm reloading..."
    yield return new WaitForSeconds(5.0f);
    ...
    PlayReloadAudio();
    caseCont = 2;
    reloading = false; // reload ended
}