Handles complicated flows of Promises where each Promise has it's own set of dependencies to start running