defer also should be able to cache arguments
iterator should store all data comes from async step and pass it to finish even if error acuur: needed for pipe of pipes pattern