Почему не выполняется деструктурирующие присваивание без условия?
В таком виде, JS воспринимает всю конструкцию как единое выражение, оператор if же способствует автоматической расстановке точек с запятой.
В итоге получается такая последовательность действий:async function requestKeyParsingToken() {
  try {
    ({public_key: keyParsingTokenEndpoint} = data);
    const {data} = await request({
      method: "get",
      url: TOKEN_SETTINGS,
    })(data);     
  } catch (error) {
    console.log(error)
  }
}А ошибка возникает из-за использования переменной до ее объявления, что запрещено с переменными объявленными через let и const, это называется "мертвое всплытие".

P.S. таких ошибок (а так же многих других) помогает избегать eslint, конкретно в данном случае помогло бы правило semi с параметром always
const { data } = await request({
      method: "get",
      url: TOKEN_SETTINGS,
    }); // точку с запятой сюда иначе следующие скобки () отработают как вызов функции. Как код отрабатывает справа на лево.

const {public_key: keyParsingTokenEndpoint} = data;