V8 UI hangs on file downloads

Versions used: Vaadin 8.8.6, Tomcat 9.0.22, Java 8 / OpenJDK 12
@PreserveOnRefresh on our UI class, pushmode automatic

We have a Link using an ExternalResource that points to a servlet path on the same Tomcat server, and that servlet prepares the item to be downloaded and uses standard servlet code to send the data back to the browser (HttpServletResponse.getOutputResponse().write of a byte array). We send back XML data, generated PDF files, and generated ZIP files. The servlet does make use of the user’s HttpSession to ensure user authentication and to pass some context information about the request from the Vaadin UI to the servlet.

Often, the file downloads fine, but the UI stops responding. All button clicks seem to be ignored, including our logoff button. But if we REFRESH the browser, then UI becomes fully responsive again.

Does anybody have any ideas why the UI might hang? Does my servlet code need to consider anything special since it’s being called via the Vaadin UI code?

If not, are there any ideas on how best to go about debugging it?

Thanks for any tips that could help resolve this as most users do not know they can refresh their browser to make it respond again.