libusb error IO should be fatal as well if it gets through usb read and write.
diff --git a/usbutils.c b/usbutils.c
index 44ba6ba..22fe9af 100644
--- a/usbutils.c
+++ b/usbutils.c
@@ -20,6 +20,7 @@
#define NODEV(err) ((err) == LIBUSB_ERROR_NO_DEVICE || \
(err) == LIBUSB_ERROR_PIPE || \
+ (err) == LIBUSB_ERROR_IO || \
(err) == LIBUSB_ERROR_OTHER)
/* Timeout errors on writes are basically unrecoverable */