Conditionally run async tasks and dependencies based on logic defined in configuration.  So tasks can be reused in different code flows, without redefining their method signatures or adding lots of conditions to code.