whole_func_string: function request_script(chain_opts,script_obj,registry_item,onload,preload_this_script) {
  		// setTimeout() "yielding" prevents some weird race/crash conditions in older browsers
  		setTimeout(function(){
  			var script, src = script_obj.real_src, xhr;
  
  			// don't proceed until `append_to` is ready to append to
  			if ("item" in append_to) { // check if `append_to` ref is still a live node list
  				if (!append_to[0]) { // `append_to` node not yet ready
  					// try again in a little bit -- note: will re-call the anonymous function in the outer setTimeout, not the parent `request_script()`
  					setTimeout(arguments.callee,25);
  					return;
  				}
  				// reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
  				append_to = append_to[0];
  			}
  			script = document.createElement("script");
  			if (script_obj.type) script.type = script_obj.type;
  			if (script_obj.charset) script.charset = script_obj.charset;
  			if (script_obj.crossOrigin) script.crossOrigin = script_obj.crossOrigin;
  
  			// should preloading be used for this script?
  			if (preload_this_script) {
  				// real script preloading?
  				if (real_preloading) {
  					if (chain_opts[_Debug]) log_msg("start script preload: "+src);
  					registry_item.elem = script;
  					if (explicit_preloading) { // explicit preloading (aka, Zakas' proposal)
  						script.preload = true;
  						script.onpreload = onload;
  					}
  					else {
  						script.onreadystatechange = function(){
  							if (script.readyState == "loaded") onload();
  						};
  					}
  					script.src = src;
  					// NOTE: no append to DOM yet, appending will happen when ready to execute
  				}
  
  				// This is the ultimate fallback in React Server.  The
  				// "cache-preloading" option in stock LABjs doesn't work in
  				// modern Chrome, so... this is our last best hope.  If you're
  				// configured for splitJsLoadFromExecution then you'd better
  				// have xhr access to your scripts!  They need to either be on
  				// the same domain or have CORS headers.
  				else if (chain_opts[_UseCORSXHR] || (src.indexOf(root_domain) == 0 && chain_opts[_UseLocalXHR])) {
  					xhr = new XMLHttpRequest(); // note: IE never uses XHR (it supports true preloading), so no more need for ActiveXObject fallback for IE <= 7
  					if (chain_opts[_Debug]) log_msg("start script preload (xhr): "+src);
  					xhr.onreadystatechange = function() {
  						if (xhr.readyState == 4) {
  							xhr.onreadystatechange = function(){}; // fix a memory leak in IE
  							registry_item.text = xhr.responseText + "\n//@ sourceURL=" + src; // http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/
  							onload();
  						}
  					};
  					xhr.open("GET",src);
  					xhr.send();
  				}
  				// as a last resort, use cache-preloading
  				else {
  					if (chain_opts[_Debug]) log_msg("start script preload (cache): "+src);
  					script.type = "text/cache-script";
  					create_script_load_listener(script,registry_item,"ready",function() {
  						append_to.removeChild(script);
  						onload();
  					});
  					script.src = src;
  					append_to.insertBefore(script,append_to.firstChild);
  				}
  			}
  			// use async=false for ordered async? parallel-load-serial-execute http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
  			else if (script_ordered_async) {
  				if (chain_opts[_Debug]) log_msg("start script load (ordered async): "+src);
  				script.async = false;
  				create_script_load_listener(script,registry_item,"finished",onload);
  				script.src = src;
  				append_to.insertBefore(script,append_to.firstChild);
  			}
  			// otherwise, just a normal script element
  			else {
  				if (chain_opts[_Debug]) log_msg("start script load: "+src);
  				create_script_load_listener(script,registry_item,"finished",onload);
  				script.src = src;
  				append_to.insertBefore(script,append_to.firstChild);
  			}
  		},0);
  	}
func_code_string: function request_script(chain_opts,script_obj,registry_item,onload,preload_this_script) {
  		// setTimeout() "yielding" prevents some weird race/crash conditions in older browsers
  		setTimeout(function(){
  			var script, src = script_obj.real_src, xhr;
  
  			// don't proceed until `append_to` is ready to append to
  			if ("item" in append_to) { // check if `append_to` ref is still a live node list
  				if (!append_to[0]) { // `append_to` node not yet ready
  					// try again in a little bit -- note: will re-call the anonymous function in the outer setTimeout, not the parent `request_script()`
  					setTimeout(arguments.callee,25);
  					return;
  				}
  				// reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
  				append_to = append_to[0];
  			}
  			script = document.createElement("script");
  			if (script_obj.type) script.type = script_obj.type;
  			if (script_obj.charset) script.charset = script_obj.charset;
  			if (script_obj.crossOrigin) script.crossOrigin = script_obj.crossOrigin;
  
  			// should preloading be used for this script?
  			if (preload_this_script) {
  				// real script preloading?
  				if (real_preloading) {
  					if (chain_opts[_Debug]) log_msg("start script preload: "+src);
  					registry_item.elem = script;
  					if (explicit_preloading) { // explicit preloading (aka, Zakas' proposal)
  						script.preload = true;
  						script.onpreload = onload;
  					}
  					else {
  						script.onreadystatechange = function(){
  							if (script.readyState == "loaded") onload();
  						};
  					}
  					script.src = src;
  					// NOTE: no append to DOM yet, appending will happen when ready to execute
  				}
  
  				// This is the ultimate fallback in React Server.  The
  				// "cache-preloading" option in stock LABjs doesn't work in
  				// modern Chrome, so... this is our last best hope.  If you're
  				// configured for splitJsLoadFromExecution then you'd better
  				// have xhr access to your scripts!  They need to either be on
  				// the same domain or have CORS headers.
  				else if (chain_opts[_UseCORSXHR] || (src.indexOf(root_domain) == 0 && chain_opts[_UseLocalXHR])) {
  					xhr = new XMLHttpRequest(); // note: IE never uses XHR (it supports true preloading), so no more need for ActiveXObject fallback for IE <= 7
  					if (chain_opts[_Debug]) log_msg("start script preload (xhr): "+src);
  					xhr.onreadystatechange = function() {
  						if (xhr.readyState == 4) {
  							xhr.onreadystatechange = function(){}; // fix a memory leak in IE
  							registry_item.text = xhr.responseText + "\n//@ sourceURL=" + src; // http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/
  							onload();
  						}
  					};
  					xhr.open("GET",src);
  					xhr.send();
  				}
  				// as a last resort, use cache-preloading
  				else {
  					if (chain_opts[_Debug]) log_msg("start script preload (cache): "+src);
  					script.type = "text/cache-script";
  					create_script_load_listener(script,registry_item,"ready",function() {
  						append_to.removeChild(script);
  						onload();
  					});
  					script.src = src;
  					append_to.insertBefore(script,append_to.firstChild);
  				}
  			}
  			// use async=false for ordered async? parallel-load-serial-execute http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
  			else if (script_ordered_async) {
  				if (chain_opts[_Debug]) log_msg("start script load (ordered async): "+src);
  				script.async = false;
  				create_script_load_listener(script,registry_item,"finished",onload);
  				script.src = src;
  				append_to.insertBefore(script,append_to.firstChild);
  			}
  			// otherwise, just a normal script element
  			else {
  				if (chain_opts[_Debug]) log_msg("start script load: "+src);
  				create_script_load_listener(script,registry_item,"finished",onload);
  				script.src = src;
  				append_to.insertBefore(script,append_to.firstChild);
  			}
  		},0);
  	}
func_documentation_string: make the request for a scriptha