diff --git a/src/webargs/core.py b/src/webargs/core.py index 42a754d5..05519ab0 100644 --- a/src/webargs/core.py +++ b/src/webargs/core.py @@ -2,6 +2,7 @@ import asyncio import functools +import inspect import json import logging import typing @@ -237,10 +238,12 @@ async def _async_load_location_data( # an async variant of the _load_location_data method # the loader function itself may or may not be async loader_func = self._get_loader(location) - if asyncio.iscoroutinefunction(loader_func): - data = await loader_func(req, schema) - else: - data = loader_func(req, schema) + + data = loader_func(req, schema) + + if inspect.isawaitable(data): + return await data + return data def _on_validation_error(