I am unsure I would remove timeouts even from bulk endpoints. It is true that some devices (the usb/serial for example) need to read for an undefined time waiting for data, but I don't think that is an issue as long as the timeouts are long enough,
Please show us the algorithm that *correctly* determines 'long enough' for every application talking to the devices.
