this keeps the call stack flat even for very deep store directories. moving progress reporting out of the method optimizing one path also lets us move the inevitable IO wait and associated promise overhead. Change-Id: I5083d88b05c247c7e19a21a646bcf3f62bfa3200