If you're getting nil results, make sure the book is currently being read.
If it is, then you could run it again once GET_ITEM_INFO_RECEIVED fires, but since you presumably have the item in your inventory and are reading it, the info should already be available in memory so this shouldn't be happening.
Actually it looks like GetItemInfoInstant just returns itemID directly? I checked that the other day and I thought it didn't, but I must have misread. That would be the better and more straightforward way of doing it.
First output being the itemID for the book item being read.