/// <param name="settings">Document access settings for the operation.</param>
/// <param name="sourceInfo">An optional structure containing meta-information for the requesting document.</param>
/// <param name="specifier">A string specifying the document to be loaded.</param>
/// <param name="category">An optional category for the requested document.</param>
/// <param name="contextCallback">An optional context callback for the requested document.</param>
/// <returns>A task that represents the asynchronous operation. Upon completion, the task's result is a <c><see cref="Document"/></c> instance that represents the loaded document.</returns>
/// <remarks>
/// A loaded document must have an absolute <see cref="DocumentInfo.Uri">URI</see>. Once a
/// load operation has completed successfully, subsequent requests that resolve to the same
/// URI are expected to return the same <c><see cref="Document"/></c> reference, although loaders
/// are not required to manage document caches of unlimited size.