 			return false;
 		}
 		
-		private function generateBusyWaitWrapper(callback:Function, object:ILinkableObject):Function
-		{
-			return function():void {
-				if (!WeaveAPI.SessionManager.linkableObjectIsBusy(object))
-					callback();
+		private function generateBusyWaitWrapper(callback:Function):Function
+		{
+			var wrapper:Function = function():void {
+				for (var target:* in _d2d_callback_target.dictionary[wrapper])
+					if (WeaveAPI.SessionManager.linkableObjectIsBusy(target))
+						return;
+				callback();
 			};
+			return wrapper;
 		}
 		
 		/**

	import flash.utils.Dictionary;
	import flash.utils.getQualifiedClassName;
	
	import weave.api.core.IExternalSessionStateInterface;
	import weave.api.core.ILinkableDynamicObject;
	import weave.api.core.ILinkableHashMap;
	import weave.api.core.ILinkableObject;
	import weave.api.getCallbackCollection;
	import weave.compiler.Compiler;
	import weave.compiler.ICompiledObject;
	import weave.compiler.StandardLib;

				for (var target:Object in _d2d_callback_target.dictionary[callback])
					getCallbackCollection(target as ILinkableObject).removeCallback(callback);
				delete _d2d_callback_target.dictionary[callback];
				delete _funcToWrapper[callback];
				return true;
			}
			
