better timeout & testing for offline fallback