smarter execution flow

@williamboxhall The current execution flow is too limited, it is capable to batch requests only for simple scenarios. This change introduces a smarter execution flow that allows to batch requests even in deep nested ```flatMap``` compositions.
This line makes the execution flow wait for the the future completion. The ```liftToTry``` is used basically to ignore failures, since we are interested only to be aware of the completion, not the result.