async with always executes the right side of each clause inside a new task. Tasks are spawned as soon as all the tasks that it depends on are resolved. In other words,
async with resolves the dependency graph and executes all the clauses in the most performant way possible. It also ensures that, if a clause does not match, any running task is shut down.
You can find here the list of improvements of the v0.3.0 version.
GitHub Repo: https://github.com/fertapric/async_with