Load data into Document objects.
Attention:
This implementation starts an asyncio event loop which will only work if running in a sync env. In an async env, it should fail since there is already an event loop running.
This code should be updated to kick off the event loop from a separate thread if running within an async context.