Prerenderer currently waits for 2 seconds before taking a snapshot at the end of an OnLoad event. BackgroundLoader does not.
Latest UMA from Finch experiment shows that this may be the cause of 200%+ increase in SavePage failures due to archive creation failed or AlreadyExists:
If a page redirects while the Save action occurs, archive creation will fail URL match, resulting in archive creation failed
If a page redirects and the redirect also loads, this will trigger a 2nd SavePage event, which is a race condition that might result in AlreadyExists.
Prerender actually takes care of the 2nd case by marking subsequent OnLoad events as Loading_Cancelled (https://cs.chromium.org/chromium/src/chrome/browser/android/offline_pages/prerendering_loader.cc?rcl=33a7a547b95490ef9f24c8a24d9fa35800df1595&l=215)
Comment 1 by bugdroid1@chromium.org
, Feb 27 2017