How do I start regenerating Shields before I finish regenerating Health?

At the moment, my code only starts shield regeneration after health regeneration is finished. How do I make it so shield regeneration can start while health is still regenerating?

public IEnumerator RegenHealth()
{
    isRegen = true;
          
    if (currentHealth < maxHealth && currentShields < maxShields)
    {
        yield return new WaitForSeconds(healthRegenDelay);
        Debug.Log("Just started regenning Health ");
        while (currentHealth < maxHealth)
        {
            Debug.Log("Health Regenned: " + (currentHealth + healthRegenRate * Time.deltaTime));
            currentHealth += healthRegenRate * Time.deltaTime;
            yield return new WaitForEndOfFrame();
        }
        yield return new WaitForSeconds(shieldRegenDelay);
        Debug.Log("Just started regenning Shield ");
        while (currentShields < maxShields)
        {
            Debug.Log("Shield Regenned: " + (currentShields + shieldRegenRate * Time.deltaTime));
            currentShields += shieldRegenRate * Time.deltaTime;
            yield return new WaitForEndOfFrame();
        }
    }
    if (currentHealth == maxHealth && currentShields < maxShields)
    {
        yield return new WaitForSeconds(shieldRegenDelay);
        Debug.Log("Just started regenning Shield ");
        while (currentShields < maxShields)
        {
            Debug.Log("Shield Regenned: " + (currentShields + shieldRegenRate * Time.deltaTime));
            currentShields += shieldRegenRate * Time.deltaTime;
            yield return new WaitForEndOfFrame();
        }
    }
    isRegen = false;
}