slightly kludgy async "control flow" handling

naive and inelegant, but works... (now to research someone who's done
it well)