This reads from asyncIterableP updating iterationObserver with each successive value. The iterationObserver may only be interested in certain occurrences (updateState, finish, fail), so for convenience, observeIteration feature tests for those methods before calling them.