Index: class.wp-scripts.php
===================================================================
--- class.wp-scripts.php	(revision 19734)
+++ class.wp-scripts.php	(working copy)
@@ -114,10 +114,13 @@
 
 		$src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
 
+		$defer = isset($this->registered[$handle]->extra['defer'])?"defer='defer'":false;
+		$async = isset($this->registered[$handle]->extra['async'])?"async='async'":false;
+
 		if ( $this->do_concat )
-			$this->print_html .= "<script type='text/javascript' src='$src'></script>\n";
+			$this->print_html .= "<script type='text/javascript' src='$src' $defer $async ></script>\n";
 		else
-			echo "<script type='text/javascript' src='$src'></script>\n";
+			echo "<script type='text/javascript' src='$src' $defer $async ></script>\n";
 
 		return true;
 	}
Index: functions.wp-scripts.php
===================================================================
--- functions.wp-scripts.php	(revision 19734)
+++ functions.wp-scripts.php	(working copy)
@@ -49,7 +49,7 @@
  * @param bool $in_footer (optional) Whether to enqueue the script before </head> or before </body>
  * @return null
  */
-function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ) {
+function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false, $defer = false, $async = false ) {
 	global $wp_scripts;
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
@@ -61,6 +61,11 @@
 	$wp_scripts->add( $handle, $src, $deps, $ver );
 	if ( $in_footer )
 		$wp_scripts->add_data( $handle, 'group', 1 );
+	if ( $async )
+		$wp_scripts->add_data( $handle, 'async', 1 );
+	if ( $defer )
+		$wp_scripts->add_data( $handle, 'defer', 1 );
+
 }
 
 /**
@@ -122,7 +127,7 @@
  * @since r16
  * @see wp_register_script() For parameter information.
  */
-function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) {
+function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false, $defer = false, $async = false  ) {
 	global $wp_scripts;
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
@@ -136,6 +141,11 @@
 		$wp_scripts->add( $_handle[0], $src, $deps, $ver );
 		if ( $in_footer )
 			$wp_scripts->add_data( $_handle[0], 'group', 1 );
+		if ( $async )
+			$wp_scripts->add_data( $handle, 'async', 1 );
+		if ( $defer )
+			$wp_scripts->add_data( $handle, 'defer', 1 );
+			
 	}
 	$wp_scripts->enqueue( $handle );
 }
