waitForDeviceType(), waitForSystem(), waitForConfig() all call waitForDevice() in a loop, meaning that each device (that happens to be busy) adds to the effective timeout for the devices awaited last.
Instead, all awaited devices should use a deadline relative to the start of the call.
Or relative to the last time a set-operation was performed on the device — which would be the most correct. But we also need to allow for devices that can spontaneously become busy.
waitForDeviceType(),waitForSystem(),waitForConfig()all callwaitForDevice()in a loop, meaning that each device (that happens to be busy) adds to the effective timeout for the devices awaited last.Instead, all awaited devices should use a deadline relative to the start of the call.
Or relative to the last time a set-operation was performed on the device — which would be the most correct. But we also need to allow for devices that can spontaneously become busy.