delay(5); //delay to allow buffer to fill
Is STILL a bullshit bandaid solution that sometimes work for some baud rates. If you don't want to learn to read serial data properly, you will continue to have (intermittent) problems. Bite the bullet; learn to send and receive serial data properly.
void abc () {
Get real. This function name says NOTHING about what the function does.