code: async function getPushRules() {
          try {
              debuglog("Getting push rules...");
              const result = await client.getPushRules();
              debuglog("Got push rules");
  
              client.pushRules = result;
          } catch (err) {
              console.error("Getting push rules failed", err);
              if (self._shouldAbortSync(err)) return;
              // wait for saved sync to complete before doing anything else,
              // otherwise the sync state will end up being incorrect
              debuglog("Waiting for saved sync before retrying push rules...");
              await self.recoverFromSyncStartupError(savedSyncPromise, err);
              getPushRules();
              return;
          }
          checkLazyLoadStatus(); // advance to the next stage
      }
docs: We need to do one-off checks before we can begin the /sync loop. These are: 1) We need to get push rules so we can check if events should bing as we get them from /sync. 2) We need to get/create a filter which we can use for /sync. 3) We need to check the lazy loading option matches what was used in the stored sync. If it doesn't, we can't use the stored sync.