code: function attemptNext() {
            if (--settings.attempts > 0 && dirty) {
              dirty = false; // Mark sweep as clean - will get dirty if resolver sees a function return
  
              resolver(base, []).then(attemptNext);
            } else {
              resolve();
            }
          }
docs: Loop the resolver until we are out of attempts