I've got a better solution here: Proposal + seeking champion: Composable promise concurrency management