I think what might make sense is for us to do away with all the `self` returning, but to keep it in situations where chaining almost always happens.

Since the new tester lends itself to chaining, and pretty much always doesn't returning anything (other then the `run()` promise), maybe we should only do the `self` returning in the new tester? We also wouldn't be at risk of someone forgetting a `self` return in the case of the tester, since the `self` returning is ensured in a single place. Sound okay?