Your awaits are random and not synced to your animations. On line 5 you start a 500ms animation but you tell the await to pause for 2000ms. Try 500ms or even 300ms with the current easing.
Have you thought of splitting up the string into single letters and animating one letter at a time? The animation would be slightly different than the wipe animation you have going right now, but you wouldn’t have to worry about backgrounds anymore