I'm not sure how I feel about having a timeout here.  We generally don't do this for any other async extensibility point -- is there a stronger than usual reason to do it here?  1 second also feels very short: one of the use cases for making this async is to allow linters that connect to a web service API, and I could easily imagine that taking > 1 sec.

And _definitely_ shouldn't `resolve(null)` in this case -- then the UI will claim there were no linting errors, which might be totally inaccurate.  I would think we'd want to synthesize a Type.META timeout message or something...  (But my preference is to ditch the timeout altogether).