Not a bug.... JR NC checks the carry flag, not what the C register contains... and LD_BYTES returns carry flag unset (NC) on error, so this is the error handling (JR NC) for an error within that CALL to LD_BYTES.
Documentation here:
https://skoolkid.github.io/rom/asm/0556.html