For #2, you may want to use llGetInventoryType to check for the existence of an item which will simply return a -1 instead of showing an error. Instead of llSleep you might want to perhaps put this within a timer, or within a change() event that checks for the CHANGED_INVENTORY flag.
llGetInventoryType
change()