async _findDiagnostics(filePath: string): Promise<?Array<ArcDiagnostic>> {
   const blacklistedLinters: Array<string> =
     (featureConfig.get('nuclide-arcanist.blacklistedLinters'): any);
   const runningProcess = this._runningProcess.get(filePath);
   if (runningProcess != null) {
     // This will cause the previous lint run to resolve with `undefined`.
     runningProcess.complete();
   }
   const arcService = getArcanistServiceByNuclideUri(filePath);
   const subject = new Subject();
   this._runningProcess.set(filePath, subject);
   const subscription = arcService.findDiagnostics(filePath, blacklistedLinters)
     .refCount()
     .toArray()
     .timeout((featureConfig.get('nuclide-arcanist.lintTimeout'): any))
     .subscribe(subject);
   return subject
     .finally(() => {
       subscription.unsubscribe();
       this._runningProcess.delete(filePath);
     })
     .toPromise();
 }