childProcess.exec(cmd, (error, stdout, stderr) => { clearTimeout(failTimer); if (error) { return temp.reject(error); } if (stderr) { if (dfu._missingDevicePermissions(stderr) && systemSupportsUdev()) { const error = new Error('Missing permissions to use DFU'); return promptAndInstallUdevRules(error).then(() => temp.reject(error), e => temp.reject(e)); } } // find DFU devices that match specs stdout = stdout || ''; let dfuIds = dfu._dfuIdsFromDfuOutput(stdout); let dfuDevices = dfuIds.map((d) => { return { type: specs[d].productName, dfuId: d, specs: specs[d] }; }); temp.resolve(dfuDevices); });
return promptAndInstallUdevRules(error).then(() => temp.reject(error), e => temp.reject(e));