async function asyncWalk(ast, { enter, leave }) {
	const instance = new AsyncWalker(enter, leave);
	return await instance.visit(ast, null);
}
@param {BaseNode} ast
@param {{
  enter?: AsyncHandler
  leave?: AsyncHandler
}} walker
@returns {Promise<BaseNode>}