Как обратиться к `api.addPosterIcon` изнутри функции

Привет,

Подскажите, пожалуйста, как обратиться к api.addPosterIcon изнутри функции?

Пример:

<script type="text/discourse-plugin" version="0.8">
   api.onPageChange(url => {
       if (Discourse?.currentUser?.admin) {
           extract_associated_user_data();
       }
   });
   function extract_associated_user_data() {
       // много кода выше, и теперь мы готовы вызвать функцию `addPosterIcon`
       api.addPosterIcon(function(data, attrs) {
            return { icon: 'user', className: 'customer' };
       });
   }
</script>

Если api.addPosterIcon переместить на верхний уровень, всё работает, однако при запуске изнутри extract_associated_user_data функция просто молча ничего не делает (не выполняется). Возможно, this как-то сбивается внутри, но я не уверен, как к нему обратиться. Я уже перепробовал множество вариантов перед тем, как задать этот вопрос.

Надеюсь, это также будет полезно будущим разработчикам.

Мы используем последнюю версию Discourse 2.8.0.beta6 (cba8b39607).

Реализация сниппетов text/discourse-plugin в темах, судя по всему, выглядит следующим образом:

Я не вижу здесь прямого упоминания экземпляра this, что подразумевает, что это не связано с неявным this в JavaScript, и это также не может быть выходом api за пределы области видимости, поскольку сниппет вставлен непосредственно туда.

Действительно ли этот минимальный пример работает, или проблема заключается в пропущенном коде?

Кстати: глобальный объект Discourse и его поле currentUser здесь также можно заменить на api.getCurrentUser():

Отлично, спасибо.

Интересно, почему api.getCurrentUser() работает без проблем внутри функции, а api.addPosterIcon всё ещё нет?

Я хотел бы по возможности использовать нативный API, а не писать собственные решения (что, впрочем, не является проблемой).