diff --git a/core/includes/module.inc b/core/includes/module.inc
index d9eab10..0d0decf 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -6,7 +6,7 @@
  */
 
 use Drupal\Component\Graph\Graph;
-use Drupal\Core\Config\DatabaseStorage;
+use Drupal\Core\Config\NullStorage;
 
 /**
  * Loads all the modules that have been enabled in the system table.
@@ -617,19 +617,26 @@ function module_uninstall($module_list = array(), $uninstall_dependents = TRUE)
     $module_list = array_keys($module_list);
   }
 
-  $storage = new DatabaseStorage();
+  $source_storage = new NullStorage();
+  $target_storage = drupal_container()->get('config.storage');
   foreach ($module_list as $module) {
+    // Remove all configuration belonging to the module.
+    $config_changes = $target_storage->listAll($module . '.');
+    if (!empty($config_changes)) {
+      $config_changes = array(
+        'delete' => $config_changes,
+        'change' => array(),
+        'create' => array(),
+      );
+      $remaining_changes = config_import_invoke_owner($config_changes, $source_storage, $target_storage);
+      config_sync_changes($remaining_changes, $source_storage, $target_storage);
+    }
+
     // Uninstall the module.
     module_load_install($module);
     module_invoke($module, 'uninstall');
     drupal_uninstall_schema($module);
 
-    // Remove all configuration belonging to the module.
-    $config_names = $storage->listAll($module . '.');
-    foreach ($config_names as $config_name) {
-      config($config_name)->delete();
-    }
-
     watchdog('system', '%module module uninstalled.', array('%module' => $module), WATCHDOG_INFO);
     drupal_set_installed_schema_version($module, SCHEMA_UNINSTALLED);
   }
