/// <summary>
        /// Creates file stream and callsback the owner of the request, then completes.
        /// </summary>
        /// <param name="fileRequest"></param>
        /// <returns>The result of the callback to the owner</returns>
        protected virtual bool FullfillFileRequest(PDFRemoteFileRequest fileRequest)
        {
            using (var stream = File.OpenRead(fileRequest.FilePath))
            {
                var success = fileRequest.Callback(this._owner, fileRequest, stream);
                fileRequest.CompleteRequest(success);

                return(success);
            }
        }
        /// <summary>
        /// Creates file stream and callsback the owner of the request, then completes.
        /// </summary>
        /// <param name="fileRequest"></param>
        /// <returns>The result of the callback to the owner</returns>
        protected async virtual Task <bool> FullfillFileRequestAsync(PDFRemoteFileRequest fileRequest)
        {
            var content = await File.ReadAllBytesAsync(fileRequest.FilePath);

            using (var stream = new MemoryStream(content))
            {
                var success = fileRequest.Callback(this.Owner, fileRequest, stream);
                fileRequest.CompleteRequest(success);

                return(success);
            }
        }
        /// <summary>
        /// Creates an http client
        /// </summary>
        /// <param name="urlRequest"></param>
        /// <returns></returns>
        protected async virtual Task <bool> FullfillUriRequestAsync(PDFRemoteFileRequest urlRequest)
        {
            var client = this.GetHttpClient();

            using (var stream = await client.GetStreamAsync(urlRequest.FilePath))
            {
                var success = urlRequest.Callback(this.Owner, urlRequest, stream);
                urlRequest.CompleteRequest(success);

                return(success);
            }
        }
        /// <summary>
        /// Creates an http client
        /// </summary>
        /// <param name="urlRequest"></param>
        /// <returns></returns>
        protected virtual bool FullfillUriRequest(PDFRemoteFileRequest urlRequest)
        {
            var client = this.GetHttpClient();

            using (var stream = client.GetStreamAsync(urlRequest.FilePath).Result)
            {
                var success = urlRequest.Callback(this._owner, urlRequest, stream);
                urlRequest.CompleteRequest(success);

                return(success);
            }
        }