I still think we should remove this timeout -- it breaks use cases like retrieving linting results from a web service, and it's something we don't do in any of our other async provider-based APIs.  And I don't see a clear reason why we need it (especially with the race condition guard that makes us ignore stale promises, even if they dangle forever).

If we must keep it, we should make the default timeout significantly longer and use `Async.withTimeout()` to simplify the code here.