Should be have IPostprocessBuildWithReportAsync ?

Similar to IPostprocessBuildWithReport but with Task as return type. So we could write some non blocking async code in the processing logic

public interface IPostprocessBuildWithReport : IOrderedCallback
{
    TimeSpan? TimeOut { get; } // for skip when too long. Return null for default
    Task OnPostprocessBuild(BuildReport report);
}

The build pipeline would need to block until your task is finished running anyway, so I don’t think there’s much point.

First, it difference between a task blocking and IO blocking (await is not IO blocking in the thread)
Second, it would be better if we could write async/await function directly, instead of the need to wrapping it in Task.Run
Third, I think async Task function should actually be promoted to be default processor function. Eventually the current one should be deprecated

digging