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.