Currently resolution is linear - dependency 1 is resolved, then dependency 2, then dependency 3, etc.
However when resolution is async, we could kick it off, and then only await it when it's needed, allowing multiple things to be resolved in parallel.
There's 2 parts to this:
Change resolution so it doesn't immediately await dependencies only once they're needed.
Order resolution so that we kick off async tasks as early as possible, and await them as late as possible. I need to think a bit about what algorithm we could use for this.
Currently resolution is linear - dependency 1 is resolved, then dependency 2, then dependency 3, etc.
However when resolution is async, we could kick it off, and then only await it when it's needed, allowing multiple things to be resolved in parallel.
There's 2 parts to this:
Change resolution so it doesn't immediately await dependencies only once they're needed.
Order resolution so that we kick off async tasks as early as possible, and await them as late as possible. I need to think a bit about what algorithm we could use for this.