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().