diff --git a/homeassistant/components/config/area_registry.py b/homeassistant/components/config/area_registry.py
index 81daf35339e881ba48ec92d6b45bdb8cabd90368..f40ed7834e3d6f247862755a908a3740df1040ff 100644
--- a/homeassistant/components/config/area_registry.py
+++ b/homeassistant/components/config/area_registry.py
@@ -90,7 +90,7 @@ async def websocket_delete_area(hass, connection, msg):
     registry = await async_get_registry(hass)
 
     try:
-        await registry.async_delete(msg["area_id"])
+        registry.async_delete(msg["area_id"])
     except KeyError:
         connection.send_message(
             websocket_api.error_message(
diff --git a/homeassistant/helpers/area_registry.py b/homeassistant/helpers/area_registry.py
index a41e748d1adb64a2a17317f2c5ccfca18c0d448c..562e832cc199cc0bf45ad779b1338435316f936e 100644
--- a/homeassistant/helpers/area_registry.py
+++ b/homeassistant/helpers/area_registry.py
@@ -1,11 +1,11 @@
 """Provide a way to connect devices to one physical location."""
-from asyncio import gather
 from collections import OrderedDict
 from typing import Container, Dict, Iterable, List, MutableMapping, Optional, cast
 
 import attr
 
 from homeassistant.core import callback
+from homeassistant.helpers import device_registry as dr, entity_registry as er
 from homeassistant.loader import bind_hass
 from homeassistant.util import slugify
 
@@ -72,12 +72,11 @@ class AreaRegistry:
         )
         return area
 
-    async def async_delete(self, area_id: str) -> None:
+    @callback
+    def async_delete(self, area_id: str) -> None:
         """Delete area."""
-        device_registry, entity_registry = await gather(
-            self.hass.helpers.device_registry.async_get_registry(),
-            self.hass.helpers.entity_registry.async_get_registry(),
-        )
+        device_registry = dr.async_get(self.hass)
+        entity_registry = er.async_get(self.hass)
         device_registry.async_clear_area_id(area_id)
         entity_registry.async_clear_area_id(area_id)
 
diff --git a/homeassistant/helpers/entity_registry.py b/homeassistant/helpers/entity_registry.py
index 51985f7bae45aa42b39fb3af5b862bb2956122f8..418c3f903047b5d5d3bf413f0d5c2f2cf94aa8c0 100644
--- a/homeassistant/helpers/entity_registry.py
+++ b/homeassistant/helpers/entity_registry.py
@@ -35,6 +35,7 @@ from homeassistant.const import (
     STATE_UNAVAILABLE,
 )
 from homeassistant.core import Event, callback, split_entity_id, valid_entity_id
+from homeassistant.helpers import device_registry as dr
 from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
 from homeassistant.loader import bind_hass
 from homeassistant.util import slugify
@@ -313,7 +314,8 @@ class EntityRegistry:
         )
         self.async_schedule_save()
 
-    async def async_device_modified(self, event: Event) -> None:
+    @callback
+    def async_device_modified(self, event: Event) -> None:
         """Handle the removal or update of a device.
 
         Remove entities from the registry that are associated to a device when
@@ -333,7 +335,7 @@ class EntityRegistry:
         if event.data["action"] != "update":
             return
 
-        device_registry = await self.hass.helpers.device_registry.async_get_registry()
+        device_registry = dr.async_get(self.hass)
         device = device_registry.async_get(event.data["device_id"])
 
         # The device may be deleted already if the event handling is late
diff --git a/tests/helpers/test_area_registry.py b/tests/helpers/test_area_registry.py
index 2b06202c862171916873f2186fab83420320bea0..0bfa5e597d276a7b07ffe4aec5c571f912d42e01 100644
--- a/tests/helpers/test_area_registry.py
+++ b/tests/helpers/test_area_registry.py
@@ -81,7 +81,7 @@ async def test_delete_area(hass, registry, update_events):
     """Make sure that we can delete an area."""
     area = registry.async_create("mock")
 
-    await registry.async_delete(area.id)
+    registry.async_delete(area.id)
 
     assert not registry.areas