ifexpressions can often create a situation where, in the initial evaluation, the observable you intended to be observed was not accessed and so future changes to it do not result in the re-evaluation of the reaction.
autorunexecutes, it will not access the
hasErrorobservable. So, if later,
hasErroris set to
isOnlinefirst getting set to
autorunwill not re-evaluate. (Once
true, only then this
autorunwill actually observe