Blinking two LEDs in and out of phase

can I have another hint?
what about led2 ?

it is working fine when using only 1 blink function in the void loop(){}

but when adding another blink function in the loop(){} such as:

const byte led1 = 2;
const byte led2 = 8;

unsigned long previousMillis = 0;
void blink(unsigned long onTime, unsigned long phaseDifference,unsigned long rate)
{
  unsigned long elapsedTime = millis() - previousMillis;

  if (elapsedTime >= rate)
  {
    previousMillis = millis(); // Start a new cycle
    elapsedTime = 0;
  }
  
  if (elapsedTime < onTime)
  {
    digitalWrite(led1, HIGH);
  }
  else
  {
    digitalWrite(led1, LOW);
  }
  if (elapsedTime >= phaseDifference && elapsedTime < (phaseDifference+onTime))
    digitalWrite(led2, HIGH);
  else
    digitalWrite(led2, LOW);
}

void setup() {

  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);

}

void loop() {
  
blink(50,0,2000);
blink(50,100,3000);


}

seems not to work the right way.