use conventional names for success/failure promise callbacks
factor out connecting to the device into a separate function
don't reconnect to device if already connected
simply resolve the deferred if ready to do so; no need to do so in a timeout, as then() will handle resolution before deferrment
ensure device status set correctly when Dashboard is opened