Issue reading I2C from M24LR04E NFC EEPROM

I'm using an Adalogger M0 Feather board and receiving 0xFF (255) values on all reads from a M24LR04E using the Seeed Studio library. I've had success with other I2C devices and I've verified the correct address and commands are being sent out of the I2C bus using another Arduino in slave mode. I get the same 0xFF read from an Adafruit Metro (i.e., Uno). For example, I'm trying to read memory volume (single byte from address 2333 using eeAddr 0x53).

From NfcTag.cpp:

byte NfcTag::_EEPROM_Read_Byte(unsigned int address)
{
    byte rdata = 0x7F;
    // start frame
    Wire.beginTransmission(eeAddr); //Device Address
    Wire.write((int)(address >> 8)); // EEPROM_MSB
    Wire.write((int)(address & 0xFF)); // EEPROM_LSB
    Wire.endTransmission();
  
    // see: https://github.com/Seeed-Studio/NFC_Tag_M24LR6E/issues/2
    // Wire.beginTransmission(eeAddr);
    Wire.requestFrom(eeAddr,1);
  
    if (Wire.available()){
        rdata = Wire.read();
    }
    // Wire.endTransmission();         // end transmission
    return rdata;
}

From my function:

byte memvol;
memvol = nfcTag.getMemoryVolume();
Serial.println(memvol, HEX);

Wire.available() is returning TRUE, because rdata is being set, but only when the device is present on my breadboard. I also see additional data on SDA when the device is present. The waveforms are square (enough), and like I said, I2C seems to work on other devices (I'm using 2.2kOhm pull-ups). Thanks very much,

Post your code!

Are you using the device in user mode or in root mode (E2 state)?

I2C Bus is byte oriented protocol, then why are you not doing like this (though it is not a big deal)?

Wire.write(highByte(address));
Wire.write(lowByte(address));