According to the documentation, it should be possible to use promises with popupTemplates:
const template = {
title: 'Title',
content: new Promise(function(res, rej) { res('test');}),
};
var featureLayer = new FeatureLayer({
url: url,
popupTemplate: template
});
However, with 4.7 this results in the following error:
Uncaught (in promise) TypeError: a.isFulfilled is not a function
at Object.get (MapView.js:143)