The reason I'd use this method instead of tasks is because tasks cannot call further tasks, if I'm not mistaken, and I don't want to be forced to have func-d and func-e be "terminal" functions, since there might be a lot of flow-level steps left after each of them completes.
This has the assumption that the func-d and func-e "branches" will never "rejoin" later down in my ETL process, which is why I didn't want to bother with dask or async.