STM32 - Reading EEPROM via I2C Delay Problem
EEProms require some minimum amount of time to write a page or single byte to memory.  Most production code will poll the device (WB bit) to see when this write has finished.  In your case, the 1ms probably allows this time to finish.
It is going to be more efficient to write by pages rather than bytes, you only have to wait one time, rather than for each byte.  Watch that you don't wrap pages.  Page size is going to be some power of 2, see datasheet for exact size.