diff --git a/bin/config-validator.js b/bin/config-validator.js
index 422c053b36dc344beaddd064aef4626cd90e1b06..0257f4d41364299e445c6b4c2f1e7e20860ea6a5 100644
--- a/bin/config-validator.js
+++ b/bin/config-validator.js
@@ -7,8 +7,8 @@ const { validateConfig } = require('../lib/config/validation');
 
 let returnVal = 0;
 
-function validate(desc, config) {
-  const res = validateConfig(config);
+async function validate(desc, config) {
+  const res = await validateConfig(config);
   if (res.errors.length) {
     console.log(
       `${desc} contains errors:\n\n${JSON.stringify(res.errors, null, 2)}`
@@ -23,42 +23,44 @@ function validate(desc, config) {
   }
 }
 
-const renovateConfigFiles = [
-  'renovate.json',
-  '.renovaterc',
-  '.renovaterc.json',
-];
-for (const file of renovateConfigFiles) {
-  try {
-    const rawContent = fs.readFileSync(file, 'utf8');
-    console.log(`Validating ${file}`);
+(async () => {
+  const renovateConfigFiles = [
+    'renovate.json',
+    '.renovaterc',
+    '.renovaterc.json',
+  ];
+  for (const file of renovateConfigFiles) {
     try {
-      const jsonContent = JSON.parse(rawContent);
-      validate(file, jsonContent);
+      const rawContent = fs.readFileSync(file, 'utf8');
+      console.log(`Validating ${file}`);
+      try {
+        const jsonContent = JSON.parse(rawContent);
+        await validate(file, jsonContent);
+      } catch (err) {
+        console.log(`${file} is not valid JSON`);
+        returnVal = 1;
+      }
     } catch (err) {
-      console.log(`${file} is not valid JSON`);
-      returnVal = 1;
+      // file does not exist
     }
-  } catch (err) {
-    // file does not exist
   }
-}
-try {
-  const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
-  if (pkgJson.renovate) {
-    console.log(`Validating package.json > renovate`);
-    validate('package.json > renovate', pkgJson.renovate);
+  try {
+    const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
+    if (pkgJson.renovate) {
+      console.log(`Validating package.json > renovate`);
+      await validate('package.json > renovate', pkgJson.renovate);
+    }
+    if (pkgJson['renovate-config']) {
+      console.log(`Validating package.json > renovate-config`);
+      for (const presetConfig of Object.values(pkgJson['renovate-config'])) {
+        await validate('package.json > renovate-config', presetConfig);
+      }
+    }
+  } catch (err) {
+    // ignore
   }
-  if (pkgJson['renovate-config']) {
-    console.log(`Validating package.json > renovate-config`);
-    Object.values(pkgJson['renovate-config']).forEach(presetConfig => {
-      validate('package.json > renovate-config', presetConfig);
-    });
+  if (returnVal !== 0) {
+    process.exit(returnVal);
   }
-} catch (err) {
-  // ignore
-}
-if (returnVal !== 0) {
-  process.exit(returnVal);
-}
-console.log('OK');
+  console.log('OK');
+})();