1. use WhenAllFuture since it be changed in go-promise
2. Try use WaitAll to improve the performance in parallelMapListToList
Add Future method to DataSource interface
Merge the future from return values of StepAction to data source, simplify the code
Change type of chanSource if return value is channel and future