implemented pay it forward pattern, so perform yields a block

I tried to implement a pull request of my suggestion described in:
https://github.com/collectiveidea/interactor/issues/41