fix(parse): handle promises returned from parsed function calls

When a parsed function call returns a promise, the evaluated value
is the resolved value of the promise rather than the promise object.

Closes #3503