diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 6972d4ec983cb75fa6a96e2369f1e93dbaa26985..61d60fdff96d76cd872e71788cb9ed8a4c7bfcbb 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -322,7 +322,15 @@ LLWearableHoldingPattern::~LLWearableHoldingPattern()
 
 bool LLWearableHoldingPattern::isDone()
 {
-	return (mResolved >= (S32)mFoundList.size());
+	if (mResolved >= (S32)mFoundList.size())
+		return true; // have everything we were waiting for
+	else if (isTimedOut())
+	{
+		llwarns << "Exceeded max wait time, updating appearance based on what has arrived" << llendl;
+		return true;
+	}
+	return false;
+
 }
 
 bool LLWearableHoldingPattern::isTimedOut()
@@ -369,16 +377,8 @@ bool LLWearableHoldingPattern::pollCompletion()
 		}
 
 		delete this;
-		return done;
 	}
-	else if (isTimedOut())
-	{
-		llwarns << "wearables taking too long to fetch for outfit, retrying updateAppearanceFromCOF()." << llendl;
-		delete this;
-		LLAppearanceManager::instance().updateAppearanceFromCOF();
-		return true;
-	}
-	return false;
+	return done;
 }
 
 static void removeDuplicateItems(LLInventoryModel::item_array_t& items)