async _onError({imapMessage, desiredParts, folder, err, logger}) {
    logger.error(`MessageProcessor: Could not build message`, {
      err,
      imapMessage,
      desiredParts,
    })
    const fingerprint = ["{{ default }}", "message processor", err.message];
    NylasEnv.reportError(err, {fingerprint,
      rateLimit: {
        ratePerHour: 30,
        key: `MessageProcessorError:${err.message}`,
      },
    })

    // Keep track of uids we failed to fetch
    const {failedUIDs = []} = folder.syncState
    const {uid} = imapMessage.attributes
    if (uid) {
      await folder.updateSyncState({failedUIDs: _.uniq(failedUIDs.concat([uid]))})
    }

    // Save parse errors for future debugging
    if (process.env.NYLAS_DEBUG) {
      const outJSON = JSON.stringify({imapMessage, desiredParts, result: {}});
      const outDir = path.join(os.tmpdir(), "k2-parse-errors", folder.name)
      const outFile = path.join(outDir, imapMessage.attributes.uid.toString());
      mkdirp.sync(outDir);
      fs.writeFileSync(outFile, outJSON);
    }
  }
When we send messages, Gmail will automatically stuff messages in
the sent folder that contain open & link tracking data. While we
will eventually clean that up, if the send takes a while to
multiple people (due to attachments) it's possible that we'll
sync that recently sent message. If this happens, we want to
ensure that no open and link tracking data is included.