A user async is a pair of a thunk (a parameterless procedure) and a
mark. Setting the mark on a user async will cause the thunk to be
executed when the user async is passed to
the mark more than once is satisfied by one execution of the thunk.
User asyncs are created with
async. They are marked with
Create a new user async for the procedure thunk.
Mark the user async a for future execution.
Execute all thunks from the marked asyncs of the list list_of_a.