Relying on this._browserSetState was incorrect as that is only set via tests. It needs to be always true so session restore works in the right order.
The lazy restore is fine in the test, and avoids the about:blank intermittent (or at least makes it much much harder to reproduce on my linux vm).