Small refactoring to remove duplication
First pass at $evalAsync
Handle the case where expression passed to $evalAsync always adds further $evalAsync