The spec should call out that in error cases promises should be rejected rather than allowed to time out. Specifically in cases where there may be an outstanding promise and the device is unplugged/disconnected during that promise.
Perhaps InvalidStateError? Perhaps as a separate "Error Handling" section?