/// <inheritdoc />
        public IEnumerator Load(IAssetRequest <T> assetRequest)
        {
            FARLogger.Assert(assetRequest.Url != null, "Request url cannot be null");
            assetRequest.State = Progress.InProgress;

            // make sure bundle is loaded
            if (BundleLoader.NeedsReload)
            {
                yield return(BundleLoader.Load());
            }

            // check for errors
            if (BundleLoader.State == Progress.Error)
            {
                FARLogger.ErrorFormat("Could not load asset bundle {0} for request {1}",
                                      BundleLoader.Url,
                                      assetRequest.Url);
                assetRequest.State = Progress.Error;
                assetRequest.OnError();
                yield break;
            }

            if (!BundleLoader.TryGetAsset(assetRequest.Url, out T asset))
            {
                FARLogger.ErrorFormat("Could not find asset {0} in bundle {1}", assetRequest.Url, BundleLoader.Url);
                assetRequest.State = Progress.Error;
                assetRequest.OnError();
                yield break;
            }

            assetRequest.State = Progress.Completed;
            assetRequest.OnLoad(asset);
        }
 /// <inheritdoc />
 public void OnError()
 {
     FARLogger.ErrorFormat("Failed to load asset from {0}", Url);
     AssetError();
 }