Use `asyncloop-run' to call a series of functions while keeping Emacs snappy
and responsive to user activity.

See the docstring of that function.  It is long, but worth your while.