 	
 	public function cancelRequest():void
 	{
-		WeaveAPI.ProgressIndicator.removeTask(loader.asyncToken);
+		WeaveAPI.ProgressIndicator.removeTask(this);
 		if (loader && !WeaveAPI.SessionManager.objectWasDisposed(this))
 			loader.removeResponder(this);
 		WeaveAPI.SessionManager.disposeObject(this);

	
	override public function result(data:Object):void
	{
		WeaveAPI.ProgressIndicator.removeTask(loader.asyncToken);
		if (!WeaveAPI.SessionManager.objectWasDisposed(this) && !WeaveAPI.SessionManager.objectWasDisposed(relevantContext))
			super.result(data);
	}
	
	override public function fault(data:Object):void
	{
		WeaveAPI.ProgressIndicator.removeTask(loader.asyncToken);
		if (!WeaveAPI.SessionManager.objectWasDisposed(this) && !WeaveAPI.SessionManager.objectWasDisposed(relevantContext))
			super.fault(data);
	}

		if (loader)
			loader.addResponder(this);
		
		WeaveAPI.ProgressIndicator.addTask(loader ? loader.asyncToken : this, relevantContext as ILinkableObject);
	}
	
	private static function noOp(..._):void {} // does nothing
