The problem can be seen when doing a CSV Export of an empty result when the Web UI is in dev mode.
The polling mechanism to get a status of async operation call does not work well with Web UI in dev mode (tomcat and Web UI use different ports in dev mode 8080 and 5000).
We are relying on the redirected flag of the request which is obscured in cross-domain fetch requests. We don't have/find the needed CORS config to bypass it.
As a direct result, you can see the Web UI is polling forever the status. The browser will loop forever asking for status and receiving 303 response.
However, once you package the Web UI as a marketplace deployed in the Nuxeo server's tomcat (hence the same domain), everything works fine.
Note this is likely not happening when the async call produces a blob which will eventually be downloaded like the CSV export action on a valid non-empty result set.