I do not see any problem in your code we are following the same.
One more thing we are doing is before applying the filter we are calling
pauseAutomaticUpdatesAsync() - > then apply filter -> resumeAutomaticUpdatesAsync()
We will give your solution a go. I will let you know if it works.
When I use getPublishedSheetsinfo() in the same scenario that you are describing, I get a sheets.length of 2 because the first dashboard is returning sheet.getSheetType() of 'WORKSHEET' and the second as 'DASHBOARD'. Make sure you drill down to the individual worksheets on the dashboard before calling getFiltersAsync().
first switch tab: this.promise = this.workbook.activateSheetAsync(tab name);
then apply filters: