diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp
index 51b59a7a7499d898c5a5daf51a7190203f2dc4cf..fbffb81fcc1383f60e8b27a82d0d9a06524f7985 100755
--- a/indra/newview/llfloaterauction.cpp
+++ b/indra/newview/llfloaterauction.cpp
@@ -57,6 +57,7 @@
 #include "llsdutil.h"
 #include "llsdutil_math.h"
 #include "lltrans.h"
+#include "llcorehttputil.h"
 
 ///----------------------------------------------------------------------------
 /// Local function declarations, constants, enums, and typedefs
@@ -361,7 +362,10 @@ void LLFloaterAuction::doResetParcel()
 
 		LL_INFOS() << "Sending parcel update to reset for auction via capability to: "
 			<< mParcelUpdateCapUrl << LL_ENDL;
-		LLHTTPClient::post(mParcelUpdateCapUrl, body, new LLHTTPClient::Responder());
+
+        LLCoreHttpUtil::HttpCoroutineAdapter::messageHttpPost(mParcelUpdateCapUrl, body,
+            "Parcel reset for auction",
+            "Parcel not set for auction.");
 
 		// Send a message to clear the object return time
 		LLMessageSystem *msg = gMessageSystem;
@@ -511,7 +515,10 @@ void LLFloaterAuction::doSellToAnyone()
 
 		LL_INFOS() << "Sending parcel update to sell to anyone for L$1 via capability to: "
 			<< mParcelUpdateCapUrl << LL_ENDL;
-		LLHTTPClient::post(mParcelUpdateCapUrl, body, new LLHTTPClient::Responder());
+
+        LLCoreHttpUtil::HttpCoroutineAdapter::messageHttpPost(mParcelUpdateCapUrl, body,
+            "Parcel set as sell to everyone.",
+            "Parcel sell to everyone failed.");
 
 		// clean up floater, and get out
 		cleanupAndClose();
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 166ef5ed7aca715e1a64d4ae0e397ba3e153d896..be18565670e6d770ce5418f4b7e4a6365bfbdce7 100755
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -50,6 +50,7 @@
 #include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "llviewerwindow.h"
+#include "llcorehttputil.h"
 
 ///----------------------------------------------------------------------------
 /// LLFloaterScriptLimits
@@ -179,372 +180,6 @@ void LLPanelScriptLimitsInfo::updateChild(LLUICtrl* child_ctr)
 {
 }
 
-///----------------------------------------------------------------------------
-// Responders
-///----------------------------------------------------------------------------
-
-void fetchScriptLimitsRegionInfoResponder::httpSuccess()
-{
-	const LLSD& content = getContent();
-	if (!content.isMap())
-	{
-		failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
-		return;
-	}
-	//we don't need to test with a fake respose here (shouldn't anyway)
-
-#ifdef DUMP_REPLIES_TO_LLINFOS
-
-	LLSDNotationStreamer notation_streamer(content);
-	std::ostringstream nice_llsd;
-	nice_llsd << notation_streamer;
-
-	OSMessageBox(nice_llsd.str(), "main cap response:", 0);
-
-	LL_INFOS() << "main cap response:" << content << LL_ENDL;
-
-#endif
-
-	// at this point we have an llsd which should contain ether one or two urls to the services we want.
-	// first we look for the details service:
-	if(content.has("ScriptResourceDetails"))
-	{
-		LLHTTPClient::get(content["ScriptResourceDetails"], new fetchScriptLimitsRegionDetailsResponder(mInfo));
-	}
-	else
-	{
-		LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-		if(!instance)
-		{
-			LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
-		}
-	}
-
-	// then the summary service:
-	if(content.has("ScriptResourceSummary"))
-	{
-		LLHTTPClient::get(content["ScriptResourceSummary"], new fetchScriptLimitsRegionSummaryResponder(mInfo));
-	}
-}
-
-void fetchScriptLimitsRegionInfoResponder::httpFailure()
-{
-	LL_WARNS() << dumpResponse() << LL_ENDL;
-}
-
-void fetchScriptLimitsRegionSummaryResponder::httpSuccess()
-{
-	const LLSD& content_ref = getContent();
-#ifdef USE_FAKE_RESPONSES
-
-	LLSD fake_content;
-	LLSD summary = LLSD::emptyMap();
-	LLSD available = LLSD::emptyArray();
-	LLSD available_urls = LLSD::emptyMap();
-	LLSD available_memory = LLSD::emptyMap();
-	LLSD used = LLSD::emptyArray();
-	LLSD used_urls = LLSD::emptyMap();
-	LLSD used_memory = LLSD::emptyMap();
-
-	used_urls["type"] = "urls";
-	used_urls["amount"] = FAKE_NUMBER_OF_URLS;
-	available_urls["type"] = "urls";
-	available_urls["amount"] = FAKE_AVAILABLE_URLS;
-	used_memory["type"] = "memory";
-	used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY;
-	available_memory["type"] = "memory";
-	available_memory["amount"] = FAKE_AVAILABLE_MEMORY;
-
-//summary response:{'summary':{'available':[{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'},{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'}],'used':[{'amount':i329,'type':'urls'},{'amount':i66741,'type':'memory'}]}}
-
-	used.append(used_urls);
-	used.append(used_memory);
-	available.append(available_urls);
-	available.append(available_memory);
-
-	summary["available"] = available;
-	summary["used"] = used;
-	
-	fake_content["summary"] = summary;
-
-	const LLSD& content = fake_content;
-
-#else
-
-	const LLSD& content = content_ref;
-
-#endif
-
-	if (!content.isMap())
-	{
-		failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
-		return;
-	}
-
-
-#ifdef DUMP_REPLIES_TO_LLINFOS
-
-	LLSDNotationStreamer notation_streamer(content);
-	std::ostringstream nice_llsd;
-	nice_llsd << notation_streamer;
-
-	OSMessageBox(nice_llsd.str(), "summary response:", 0);
-
-	LL_WARNS() << "summary response:" << *content << LL_ENDL;
-
-#endif
-
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-	if(!instance)
-	{
-		LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
-	}
-	else
-	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		if(tab)
-		{
-			LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-			if(panel_memory)
-			{
-				panel_memory->getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
-
-				LLButton* btn = panel_memory->getChild<LLButton>("refresh_list_btn");
-				if(btn)
-				{
-					btn->setEnabled(true);
-				}
-
-				panel_memory->setRegionSummary(content);
-			}
-		}
-	}
-}
-
-void fetchScriptLimitsRegionSummaryResponder::httpFailure()
-{
-	LL_WARNS() << dumpResponse() << LL_ENDL;
-}
-
-void fetchScriptLimitsRegionDetailsResponder::httpSuccess()
-{
-	const LLSD& content_ref = getContent();
-#ifdef USE_FAKE_RESPONSES
-/*
-Updated detail service, ** denotes field added:
-
-result (map)
-+-parcels (array of maps)
-  +-id (uuid)
-  +-local_id (S32)**
-  +-name (string)
-  +-owner_id (uuid) (in ERS as owner, but owner_id in code)
-  +-objects (array of maps)
-    +-id (uuid)
-    +-name (string)
-	+-owner_id (uuid) (in ERS as owner, in code as owner_id)
-	+-owner_name (sting)**
-	+-location (map)**
-	  +-x (float)
-	  +-y (float)
-	  +-z (float)
-    +-resources (map) (this is wrong in the ERS but right in code)
-      +-type (string)
-      +-amount (int)
-*/
-	LLSD fake_content;
-	LLSD resource = LLSD::emptyMap();
-	LLSD location = LLSD::emptyMap();
-	LLSD object = LLSD::emptyMap();
-	LLSD objects = LLSD::emptyArray();
-	LLSD parcel = LLSD::emptyMap();
-	LLSD parcels = LLSD::emptyArray();
-
-	resource["urls"] = FAKE_NUMBER_OF_URLS;
-	resource["memory"] = FAKE_AMOUNT_OF_MEMORY;
-	
-	location["x"] = 128.0f;
-	location["y"] = 128.0f;
-	location["z"] = 0.0f;
-	
-	object["id"] = LLUUID("d574a375-0c6c-fe3d-5733-da669465afc7");
-	object["name"] = "Gabs fake Object!";
-	object["owner_id"] = LLUUID("8dbf2d41-69a0-4e5e-9787-0c9d297bc570");
-	object["owner_name"] = "Gabs Linden";
-	object["location"] = location;
-	object["resources"] = resource;
-
-	objects.append(object);
-
-	parcel["id"] = LLUUID("da05fb28-0d20-e593-2728-bddb42dd0160");
-	parcel["local_id"] = 42;
-	parcel["name"] = "Gabriel Linden\'s Sub Plot";
-	parcel["objects"] = objects;
-	parcels.append(parcel);
-
-	fake_content["parcels"] = parcels;
-	const LLSD& content = fake_content;
-
-#else
-
-	const LLSD& content = content_ref;
-
-#endif
-
-	if (!content.isMap())
-	{
-		failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
-		return;
-	}
-
-#ifdef DUMP_REPLIES_TO_LLINFOS
-
-	LLSDNotationStreamer notation_streamer(content);
-	std::ostringstream nice_llsd;
-	nice_llsd << notation_streamer;
-
-	OSMessageBox(nice_llsd.str(), "details response:", 0);
-
-	LL_INFOS() << "details response:" << content << LL_ENDL;
-
-#endif
-
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-
-	if(!instance)
-	{
-		LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
-	}
-	else
-	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		if(tab)
-		{
-			LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-			if(panel_memory)
-			{
-				panel_memory->setRegionDetails(content);
-			}
-			else
-			{
-				LL_WARNS() << "Failed to get scriptlimits memory panel" << LL_ENDL;
-			}
-		}
-		else
-		{
-			LL_WARNS() << "Failed to get scriptlimits_panels" << LL_ENDL;
-		}
-	}
-}
-
-void fetchScriptLimitsRegionDetailsResponder::httpFailure()
-{
-	LL_WARNS() << dumpResponse() << LL_ENDL;
-}
-
-void fetchScriptLimitsAttachmentInfoResponder::httpSuccess()
-{
-	const LLSD& content_ref = getContent();
-
-#ifdef USE_FAKE_RESPONSES
-
-	// just add the summary, as that's all I'm testing currently!
-	LLSD fake_content = LLSD::emptyMap();
-	LLSD summary = LLSD::emptyMap();
-	LLSD available = LLSD::emptyArray();
-	LLSD available_urls = LLSD::emptyMap();
-	LLSD available_memory = LLSD::emptyMap();
-	LLSD used = LLSD::emptyArray();
-	LLSD used_urls = LLSD::emptyMap();
-	LLSD used_memory = LLSD::emptyMap();
-
-	used_urls["type"] = "urls";
-	used_urls["amount"] = FAKE_NUMBER_OF_URLS;
-	available_urls["type"] = "urls";
-	available_urls["amount"] = FAKE_AVAILABLE_URLS;
-	used_memory["type"] = "memory";
-	used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY;
-	available_memory["type"] = "memory";
-	available_memory["amount"] = FAKE_AVAILABLE_MEMORY;
-
-	used.append(used_urls);
-	used.append(used_memory);
-	available.append(available_urls);
-	available.append(available_memory);
-
-	summary["available"] = available;
-	summary["used"] = used;
-	
-	fake_content["summary"] = summary;
-	fake_content["attachments"] = content_ref["attachments"];
-
-	const LLSD& content = fake_content;
-
-#else
-
-	const LLSD& content = content_ref;
-
-#endif
-
-	if (!content.isMap())
-	{
-		failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
-		return;
-	}
-
-#ifdef DUMP_REPLIES_TO_LLINFOS
-
-	LLSDNotationStreamer notation_streamer(content);
-	std::ostringstream nice_llsd;
-	nice_llsd << notation_streamer;
-
-	OSMessageBox(nice_llsd.str(), "attachment response:", 0);
-	
-	LL_INFOS() << "attachment response:" << content << LL_ENDL;
-
-#endif
-
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-
-	if(!instance)
-	{
-		LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
-	}
-	else
-	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		if(tab)
-		{
-			LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
-			if(panel)
-			{
-				panel->getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
-
-				LLButton* btn = panel->getChild<LLButton>("refresh_list_btn");
-				if(btn)
-				{
-					btn->setEnabled(true);
-				}
-			
-				panel->setAttachmentDetails(content);
-			}
-			else
-			{
-				LL_WARNS() << "Failed to get script_limits_my_avatar_panel" << LL_ENDL;
-			}
-		}
-		else
-		{
-			LL_WARNS() << "Failed to get scriptlimits_panels" << LL_ENDL;
-		}
-	}
-}
-
-void fetchScriptLimitsAttachmentInfoResponder::httpFailure()
-{
-	LL_WARNS() << dumpResponse() << LL_ENDL;
-}
-
 ///----------------------------------------------------------------------------
 // Memory Panel
 ///----------------------------------------------------------------------------
@@ -564,12 +199,8 @@ BOOL LLPanelScriptLimitsRegionMemory::getLandScriptResources()
 	std::string url = gAgent.getRegion()->getCapability("LandResources");
 	if (!url.empty())
 	{
-		body["parcel_id"] = mParcelId;
-
-		LLSD info;
-		info["parcel_id"] = mParcelId;
-		LLHTTPClient::post(url, body, new fetchScriptLimitsRegionInfoResponder(info));
-				
+        LLCoros::instance().launch("LLPanelScriptLimitsRegionMemory::getLandScriptResourcesCoro",
+            boost::bind(&LLPanelScriptLimitsRegionMemory::getLandScriptResourcesCoro, this, _1, url));
 		return TRUE;
 	}
 	else
@@ -578,6 +209,147 @@ BOOL LLPanelScriptLimitsRegionMemory::getLandScriptResources()
 	}
 }
 
+void LLPanelScriptLimitsRegionMemory::getLandScriptResourcesCoro(LLCoros::self& self, std::string url)
+{
+    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
+    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
+        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("getLandScriptResourcesCoro", httpPolicy));
+    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+
+    LLSD postData;
+
+    postData["parcel_id"] = mParcelId;
+
+    LLSD result = httpAdapter->postAndYield(self, httpRequest, url, postData);
+
+    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
+    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
+
+    if (!status)
+    {
+        LL_WARNS() << "Failed to get script resource info" << LL_ENDL;
+        return;
+    }
+
+    // We could retrieve these sequentially inline from this coroutine. But 
+    // since the original code retrieved them in parallel I'll spawn two 
+    // coroutines to do the retrieval. 
+
+    // The summary service:
+    if (result.has("ScriptResourceSummary"))
+    {
+        std::string urlResourceSummary = result["ScriptResourceSummary"].asString();
+        LLCoros::instance().launch("LLPanelScriptLimitsRegionMemory::getLandScriptSummaryCoro",
+            boost::bind(&LLPanelScriptLimitsRegionMemory::getLandScriptSummaryCoro, this, _1, urlResourceSummary));
+    }
+
+    if (result.has("ScriptResourceDetails"))
+    {
+        std::string urlResourceDetails = result["ScriptResourceDetails"].asString();
+        LLCoros::instance().launch("LLPanelScriptLimitsRegionMemory::getLandScriptDetailsCoro",
+            boost::bind(&LLPanelScriptLimitsRegionMemory::getLandScriptDetailsCoro, this, _1, urlResourceDetails));
+    }
+
+   
+}
+
+void LLPanelScriptLimitsRegionMemory::getLandScriptSummaryCoro(LLCoros::self& self, std::string url)
+{
+    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
+    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
+        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("getLandScriptSummaryCoro", httpPolicy));
+    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+
+    LLSD result = httpAdapter->getAndYield(self, httpRequest, url);
+
+    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
+    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
+
+    if (!status)
+    {
+        LL_WARNS() << "Unable to retrieve script summary." << LL_ENDL;
+        return;
+    }
+
+    LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+    if (!instance)
+    {
+        LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
+        return;
+    }
+
+    LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+    if (!tab)
+    {
+        LL_WARNS() << "Unable to access script limits tab" << LL_ENDL;
+        return;
+    }
+
+    LLPanelScriptLimitsRegionMemory* panelMemory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+    if (!panelMemory)
+    {
+        LL_WARNS() << "Unable to get memory panel." << LL_ENDL;
+        return;
+    }
+
+    panelMemory->getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
+
+    LLButton* btn = panelMemory->getChild<LLButton>("refresh_list_btn");
+    if (btn)
+    {
+        btn->setEnabled(true);
+    }
+
+    result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
+    panelMemory->setRegionSummary(result);
+
+}
+
+void LLPanelScriptLimitsRegionMemory::getLandScriptDetailsCoro(LLCoros::self& self, std::string url)
+{
+    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
+    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
+        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("getLandScriptDetailsCoro", httpPolicy));
+    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+
+    LLSD result = httpAdapter->getAndYield(self, httpRequest, url);
+
+    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
+    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
+
+    if (!status)
+    {
+        LL_WARNS() << "Unable to retrieve script details." << LL_ENDL;
+        return;
+    }
+
+    LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+
+    if (!instance)
+    {
+        LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
+        return;
+    }
+
+    LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+    if (!tab)
+    {
+        LL_WARNS() << "Unable to access script limits tab" << LL_ENDL;
+        return;
+    }
+
+    LLPanelScriptLimitsRegionMemory* panelMemory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+
+    if (!panelMemory)
+    {
+        LL_WARNS() << "Unable to get memory panel." << LL_ENDL;
+        return;
+    }
+
+    result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
+    panelMemory->setRegionDetails(result);
+}
+
 void LLPanelScriptLimitsRegionMemory::processParcelInfo(const LLParcelData& parcel_data)
 {
 	if(!getLandScriptResources())
@@ -1174,7 +946,8 @@ BOOL LLPanelScriptLimitsAttachment::requestAttachmentDetails()
 	std::string url = gAgent.getRegion()->getCapability("AttachmentResources");
 	if (!url.empty())
 	{
-		LLHTTPClient::get(url, body, new fetchScriptLimitsAttachmentInfoResponder());
+        LLCoros::instance().launch("LLPanelScriptLimitsAttachment::getAttachmentLimitsCoro",
+            boost::bind(&LLPanelScriptLimitsAttachment::getAttachmentLimitsCoro, this, _1, url));
 		return TRUE;
 	}
 	else
@@ -1183,6 +956,59 @@ BOOL LLPanelScriptLimitsAttachment::requestAttachmentDetails()
 	}
 }
 
+void LLPanelScriptLimitsAttachment::getAttachmentLimitsCoro(LLCoros::self& self, std::string url)
+{
+    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
+    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
+        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("getAttachmentLimitsCoro", httpPolicy));
+    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+
+    LLSD result = httpAdapter->getAndYield(self, httpRequest, url);
+
+    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
+    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
+
+    if (!status)
+    {
+        LL_WARNS() << "Unable to retrieve attachment limits." << LL_ENDL;
+        return;
+    }
+
+    LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+
+    if (!instance)
+    {
+        LL_WARNS() << "Failed to get llfloaterscriptlimits instance" << LL_ENDL;
+        return;
+    }
+
+    LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+    if (!tab)
+    {
+        LL_WARNS() << "Failed to get scriptlimits_panels" << LL_ENDL;
+        return;
+    }
+
+    LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
+    if (!panel)
+    {
+        LL_WARNS() << "Failed to get script_limits_my_avatar_panel" << LL_ENDL;
+        return;
+    }
+
+    panel->getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
+
+    LLButton* btn = panel->getChild<LLButton>("refresh_list_btn");
+    if (btn)
+    {
+        btn->setEnabled(true);
+    }
+
+    result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
+    panel->setAttachmentDetails(result);
+}
+
+
 void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
 {
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index 5ba0185d329e2e132c54fefabf1edb85305f160e..030020087b56822197ca78ae68bdced5aefea0ab 100755
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -33,6 +33,8 @@
 #include "llhost.h"
 #include "llpanel.h"
 #include "llremoteparcelrequest.h"
+#include "lleventcoro.h"
+#include "llcoros.h"
 
 class LLPanelScriptLimitsInfo;
 class LLTabContainer;
@@ -79,57 +81,6 @@ class LLPanelScriptLimitsInfo : public LLPanel
 	LLHost mHost;
 };
 
-/////////////////////////////////////////////////////////////////////////////
-// Responders
-/////////////////////////////////////////////////////////////////////////////
-
-class fetchScriptLimitsRegionInfoResponder: public LLHTTPClient::Responder
-{
-	LOG_CLASS(fetchScriptLimitsRegionInfoResponder);
-public:
-	fetchScriptLimitsRegionInfoResponder(const LLSD& info) : mInfo(info) {};
-
-private:
-	/* virtual */ void httpSuccess();
-	/* virtual */ void httpFailure();
-	LLSD mInfo;
-};
-
-class fetchScriptLimitsRegionSummaryResponder: public LLHTTPClient::Responder
-{
-	LOG_CLASS(fetchScriptLimitsRegionSummaryResponder);
-public:
-	fetchScriptLimitsRegionSummaryResponder(const LLSD& info) : mInfo(info) {};
-
-private:
-	/* virtual */ void httpSuccess();
-	/* virtual */ void httpFailure();
-	LLSD mInfo;
-};
-
-class fetchScriptLimitsRegionDetailsResponder: public LLHTTPClient::Responder
-{
-	LOG_CLASS(fetchScriptLimitsRegionDetailsResponder);
-public:
-	fetchScriptLimitsRegionDetailsResponder(const LLSD& info) : mInfo(info) {};
-
-private:
-	/* virtual */ void httpSuccess();
-	/* virtual */ void httpFailure();
-	LLSD mInfo;
-};
-
-class fetchScriptLimitsAttachmentInfoResponder: public LLHTTPClient::Responder
-{
-	LOG_CLASS(fetchScriptLimitsAttachmentInfoResponder);
-public:
-	fetchScriptLimitsAttachmentInfoResponder() {};
-
-private:
-	/* virtual */ void httpSuccess();
-	/* virtual */ void httpFailure();
-};
-
 /////////////////////////////////////////////////////////////////////////////
 // Memory panel
 /////////////////////////////////////////////////////////////////////////////
@@ -181,6 +132,10 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 
 	std::vector<LLSD> mObjectListItems;
 
+    void getLandScriptResourcesCoro(LLCoros::self& self, std::string url);
+    void getLandScriptSummaryCoro(LLCoros::self& self, std::string url);
+    void getLandScriptDetailsCoro(LLCoros::self& self, std::string url);
+
 protected:
 
 // LLRemoteParcelInfoObserver interface:
@@ -225,6 +180,7 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo
 	void clearList();
 
 private:
+    void getAttachmentLimitsCoro(LLCoros::self& self, std::string url);
 
 	bool mGotAttachmentMemoryUsed;
 	S32 mAttachmentMemoryMax;