FArchiveAsync class is not compatible with event driven loading ("new async IO"), yet new FArchiveAsync2 class isn't generic -- how to fix properly?

I maintain a plugin which makes use of the FArchiveAsync class for streaming.

After updating to 4.15, all was (and remains) fine except for one very important issue. If the game team turns on Event Driven Loading (using the editor checkbox called Event Driven Loader which you can find in – Edit > Project Settings > Streaming), then my streaming-dependent plugin asserts in AsyncIOSystemBase.cpp at the beginning of FIOSystem::Get():

    check(GConfig); // Otherwise GNewAsyncIO may not be initialized properly
check(!GNewAsyncIO); // We don't want to use this old class with the new async IO

Looking at the usage of FArchiveAsync in the engine, what is being done is that if the Event Driven Loader is turned on, a new private class FArchiveAsync2 is put into use.

The problem is that this new FArchiveAsync2 class isn’t generic – it appears to be intimately tied to the type of data being loaded, which I believe is texture data in this case. So, FArchiveAsync2 doesn’t appear to be usable by my plugin, which accepts a variety of data.

In summary, it appears that FArchiveAsync is not compatible with the Event Driven Loader/“new IO”, but the new version of the class isn’t a nice generic async I/O class like the last one was.

When I first posted, I assumed the team that I am working with was using 4.16. They’re using 4.15 (edited in my query now). Looking at 4.16 code, at first glance it looks like these async classes are evolving a fair amount, so perhaps I just tried to integrate my plugin on an inconvenient rev of the engine. Still, any insight that the community has is appreciated…