Note that the use case you have in your reproduction steps does not have anything to do with your title. This is not a "macro returning a MacroBlock", this is a macro executing asynchronous content.
But the problem is that your custom TestAsyncRenderer#execute does not really execute anything (as in transformations), so your final result is a MacroBlock (which is ignored by the HTML renderer).
Thomas Mortagne on 12/Feb/26 15:20
Note that the use case you have in your reproduction steps does not have anything to do with your title. This is not a "macro returning a MacroBlock", this is a macro executing asynchronous content.
But the problem is that your custom {{TestAsyncRenderer#execute}} does not really execute anything (as in transformations), so your final result is a {{MacroBlock}} (which is ignored by the HTML renderer). You might want to take a look at DefaultBlockAsyncRenderer, to see an example of a proper implementation of BlockAsyncRenderer.
Thomas Mortagne on 12/Feb/26 15:22
Note that the use case you have in your reproduction steps does not have anything to do with your title. This is not a "macro returning a MacroBlock", this is a macro executing asynchronous content.
But the problem is that your custom {{TestAsyncRenderer#execute}} does not really execute anything (as in transformations), so your final result is a {{MacroBlock}} (which is ignored by the HTML renderer). You might want to take a look at DefaultBlockAsyncRenderer, to see an example of a proper implementation of BlockAsyncRenderer.
The following (which does match the title) works fine, for example:
Note that the use case you have in your reproduction steps does not have anything to do with your title. This is not a "macro returning a MacroBlock", this is a macro executing asynchronous content.
But the problem is that your custom {{TestAsyncRenderer#execute}} does not really execute anything (as in transformations), so your final result is a {{MacroBlock}} (which is ignored by the HTML renderer). You might want to take a look at DefaultBlockAsyncRenderer, to see an example of a proper implementation of BlockAsyncRenderer.
The following (which does match the title) works fine, for example: