Index: wp-admin/includes/ajax-actions.php
===================================================================
--- wp-admin/includes/ajax-actions.php	(revision 21817)
+++ wp-admin/includes/ajax-actions.php	(working copy)
@@ -1088,7 +1088,17 @@
 	if ( $do_autosave ) {
 		// Drafts and auto-drafts are just overwritten by autosave
 		if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) {
-			$id = edit_post();
+
+			// Autosave shouldn't save too soon after a real save
+			$now = time();
+			$then = strtotime($post->post_modified_gmt . ' +0000');
+			$delta = AUTOSAVE_INTERVAL / 2;
+
+			if ( abs($now - $then) < $delta )
+				$id = 0; // This tells us it didn't actually save
+			else
+				$id = edit_post(); // Save the post now
+
 		} else { // Non drafts are not overwritten. The autosave is stored in a special post revision.
 			$revision_id = wp_create_post_autosave( $post->ID );
 			if ( is_wp_error($revision_id) )
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 21817)
+++ wp-admin/includes/post.php	(working copy)
@@ -158,16 +158,6 @@
 			wp_die( __('You are not allowed to edit this post.' ));
 	}
 
-	// Autosave shouldn't save too soon after a real save
-	if ( 'autosave' == $post_data['action'] ) {
-		$post = get_post( $post_ID );
-		$now = time();
-		$then = strtotime($post->post_date_gmt . ' +0000');
-		$delta = AUTOSAVE_INTERVAL / 2;
-		if ( ($now - $then) < $delta )
-			return $post_ID;
-	}
-
 	$post_data = _wp_translate_postdata( true, $post_data );
 	if ( is_wp_error($post_data) )
 		wp_die( $post_data->get_error_message() );
