diff --git a/lib/workers/repository/changelog/index.ts b/lib/workers/repository/changelog/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9a5babdff717a210b497c51bd3d8185cb56fda42
--- /dev/null
+++ b/lib/workers/repository/changelog/index.ts
@@ -0,0 +1,18 @@
+import pMap from 'p-map';
+import { getChangeLogJSON } from '../../pr/changelog';
+
+// istanbul ignore next
+async function embedChangelog(upgrade): Promise<void> {
+  upgrade.logJSON = await getChangeLogJSON(upgrade); // eslint-disable-line
+}
+
+// istanbul ignore next
+export async function embedChangelogs(branches): Promise<void> {
+  const upgrades = [];
+  for (const branch of branches) {
+    for (const upgrade of branch.upgrades) {
+      upgrades.push(upgrade);
+    }
+  }
+  await pMap(upgrades, embedChangelog, { concurrency: 10 });
+}
diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts
index 0e2f247bdb363f3ebb31e0977fcaf1fe9ef3f477..1459bc3ff220bc4e788f9d03530596b84602b25d 100644
--- a/lib/workers/repository/index.ts
+++ b/lib/workers/repository/index.ts
@@ -1,10 +1,9 @@
 import fs from 'fs-extra';
-
 import { RenovateConfig } from '../../config';
 import { logger, setMeta } from '../../logger';
 import { platform } from '../../platform';
 import { addSplit, getSplits, splitInit } from '../../util/split';
-import { getChangeLogJSON } from '../pr/changelog';
+import { embedChangelogs } from './changelog';
 import handleError from './error';
 import { finaliseRepo } from './finalise';
 import { initRepo } from './init';
@@ -39,15 +38,7 @@ export async function renovateRepository(
       config
     );
     await ensureOnboardingPr(config, packageFiles, branches);
-    await Promise.all(
-      branches.map(async (branch) => {
-        await Promise.all(
-          branch.upgrades.map(async (upgrade) => {
-            upgrade.logJSON = await getChangeLogJSON(upgrade); // eslint-disable-line no-param-reassign
-          })
-        );
-      })
-    );
+    await embedChangelogs(branches);
     addSplit('changelogs');
     const res = await updateRepo(config, branches, branchList);
     addSplit('update');
diff --git a/package.json b/package.json
index 7ab095689deb1961cb4b561268fc67115f0e9c95..501dd99291470e010ea5b343fa961cf1f3de2b20 100644
--- a/package.json
+++ b/package.json
@@ -151,6 +151,7 @@
     "node-html-parser": "1.2.16",
     "npm": "6.14.5",
     "p-all": "2.1.0",
+    "p-map": "^4.0.0",
     "parse-diff": "0.7.0",
     "parse-link-header": "1.0.1",
     "pnpm": "3.8.1",