Como "aguardar" o retorno de uma chamada?

Ao usar um retorno de chamada simples, como no exemplo abaixo:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}

Como a função pode ser alterada para usar async / waitit? Especificamente, assumindo que 'someEvent' é garantido para ser chamado uma vez e apenas uma vez, eu gostaria que o teste de função fosse uma função assíncrona que não retorne até que o retorno de chamada seja executado, como:

async test() {
  return await api.on( 'someEvent' );
}

questionAnswers(3)

yourAnswerToTheQuestion