Refactor from when.js to async because promises appear to overly complicate the code as I try to add in custom request-order-dependent functions (as a more general replacement to the *nx only once concept)