 				var headers:Object = url['requestHeaders'];
 				for (var k:String in headers)
 					request.requestHeaders.push(new URLRequestHeader(k, headers[k]));
-				_requestedConfigFile = request.url;
-			}
-			
-			_loadFileCallback = callback as Function;
+				setRequestedConfigFile(request.url);
+			}
+			
+			if (callback != null)
+				_loadFileCallbacks.push(callback);
 			
 			WeaveAPI.URLRequestUtils.getURL(null, request, handleConfigFileDownloaded, handleConfigFileFault, _requestedConfigFile);
 		}
 		
 		private function downloadConfigFile():void
 		{
-			_loadFileCallback = null;
 			if (getFlashVarRecover() || Weave.handleWeaveReload())
 			{
 				handleConfigFileDownloaded();

			if (url is URLRequest)
			{
				request = url as URLRequest;
				_requestedConfigFile = request.url;
			}
			else if (url is String)
			{
				_requestedConfigFile = String(url);
				if (noCacheHack)
					url = String(url) + "?" + (new Date()).getTime(); // prevent flex from using cache
				request = new URLRequest(String(url));

		}
		
		private var _requestedConfigFile:String;
		private function setRequestedConfigFile(value:String):void
		{
			if (_requestedConfigFile == value)
				return;
			_requestedConfigFile = value;
			_loadFileCallbacks.length = 0;
		}
		private var _loadFileCallbacks:Array = [];
		/**
		 * Loads a session state file from a URL.
		 * @param url The URL to the session state file (.weave or .xml) specified as a String, a URLRequest, or an Object containing properties "url", "requestHeaders", "method".
