Como referenciar `api.addPosterIcon` de dentro de uma função

Olá,

Alguém poderia, por favor, orientar como referenciar api.addPosterIcon de dentro de uma função?

Exemplo:

<script type="text/discourse-plugin" version="0.8">
   api.onPageChange(url => {
       if (Discourse?.currentUser?.admin) {
           extract_associated_user_data();
       }
   });
   function extract_associated_user_data() {
       // muito código acima, e agora estamos prontos para chamar a função `addPosterIcon`
       api.addPosterIcon(function(data, attrs) {
            return { icon: 'user', className: 'customer' };
       });
   }
</script>

Se api.addPosterIcon for movido para o nível superior, funciona. No entanto, quando executado de dentro de extract_associated_user_data, ele simplesmente não faz nada (não é executado). Talvez this esteja sendo corrompido internamente, mas não tenho certeza de como referenciá-lo de qualquer forma. Já tentei muitas coisas antes de postar isso.

Espero que isso também seja útil para futuros desenvolvedores leitores.

Executamos a versão mais recente do Discourse 2.8.0.beta6 (cba8b39607).

A implementação de trechos de text/discourse-plugin em temas parece ser a seguinte:

Não estou vendo nenhuma menção direta a uma instância this aqui, o que implicaria que não está relacionada ao this implícito do JS, nem pode ser o api saindo do escopo, já que o trecho é colado ali.

Esse exemplo mínimo realmente funciona, ou seja, não é um problema com o código omitido?

A propósito: o global Discourse e seu campo currentUser também poderiam ser substituídos por api.getCurrentUser() aqui:

Ótimo, obrigado.

Fico me perguntando por que api.getCurrentUser() funciona perfeitamente dentro da função, enquanto api.addPosterIcon ainda não?

Gostaria de tentar usar a API nativa o máximo possível, em vez de escrever soluções de código personalizado (o que não é um problema de forma alguma).