I don't use executeAsyncScript() myself, but from looking at the OP's post and Mark's response, it would seem the OP is attempting functionality similar to example #1 found under
e.g. use of setTimeout(), although the OP's implementation might not be implemented correctly.
Mark, any tips for the OP in terms of reworking their setTimeout() implementation to be like the Selenium example? I assume they probably have to wrap the before & after console logs along with the setTimeout call and insert a callback somewhere in there.