Make lost devices appear to function as much as possible

From a discussion with @jdarpinian.

To reduce the fragility of the API, lost devices should appear to function as usual, as much as possible. In particular, we should avoid causing exceptions or promise rejections due to lost devices, as this could cause unexpected interruptions in arbitrary places in user code, potentially preventing them from recovering correctly.