 			
 			var handler:Function;
 			
-			// if the parent has not been registered yet
-			if (!d2d_owner_child.map.has(disposableParent))
-			{
-				// if this is an instance of an async class, call the async instance handler
-				handler = Weave.getAsyncInstanceHandler(disposableParent.constructor);
-				if (handler != null)
-					handler(disposableParent);
-			}
+			// objectWasDisposed() will call async instance handler if the object hasn't been seen before
+			if (objectWasDisposed(disposableParent))
+				throw new Error("registerDisposableChild(): Parent was previously disposed");
 			
 			// if this child has no owner yet...
 			if (!map_child_owner.has(disposableChild))

		{
			if (object == null)
				return false;
			if (object is ILinkableObject)
			{
				var cc:CallbackCollection = getCallbackCollection(object as ILinkableObject) as CallbackCollection;
				if (cc)
					return cc.wasDisposed;
			}
			return map_disposed.has(object);
		}
		

				// make this first parent the owner
				map_child_owner.set(disposableChild, disposableParent);
				d2d_owner_child.set(disposableParent, disposableChild, true);
				
				// objectWasDisposed() will call async instance handler if the object hasn't been seen before
				if (objectWasDisposed(disposableChild))
					throw new Error("registerDisposableChild(): Child was previously disposed");
				
				// if this is an instance of an async class, call the async instance handler
				handler = Weave.getAsyncInstanceHandler(disposableChild.constructor);
