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.
So before your changes, how did this used to behave?