Index: src/wp-admin/js/edit-comments.js
===================================================================
--- src/wp-admin/js/edit-comments.js	(revision 36349)
+++ src/wp-admin/js/edit-comments.js	(working copy)
@@ -569,6 +569,7 @@
 			if ( e.which == 13 ) {
 				commentReply.send();
 				e.preventDefault();
+				// @todo check if really necessary.
 				return false;
 			}
 		});
@@ -606,13 +607,22 @@
 
 	revert : function() {
 
-		if ( $('#the-comment-list #replyrow').length < 1 )
+		if ( $('#the-comment-list #replyrow').length < 1 ) {
+			// @todo when buttons will be buttons this should just return?
 			return false;
+		}
 
 		$('#replyrow').fadeOut('fast', function(){
 			commentReply.close();
 		});
 
+		// Try to abort any previous AJAX request when users click Cancel.
+		if ( commentReply.xhr && commentReply.xhr.readyState !== 4 ) {
+			commentReply.xhr.abort();
+			commentReply.xhr = null;
+		}
+
+		// @todo buttons should be buttons.
 		return false;
 	},
 
@@ -728,7 +738,7 @@
 					commentReply.revert(); // close on Escape
 			});
 		}, 600);
-
+		// @todo check if really necessary, default links action is already prevented.
 		return false;
 	},
 
@@ -735,6 +745,11 @@
 	send : function() {
 		var post = {};
 
+		// Return and prevent form submitting if there's already an AJAX request in progress.
+		if ( commentReply.xhr && commentReply.xhr.readyState !== 4 ) {
+			return false;
+		}
+
 		$('#replysubmit .error').hide();
 		$( '#replysubmit .spinner' ).addClass( 'is-active' );
 
@@ -751,7 +766,8 @@
 		if ( $('#comment-' + $('#comment_ID').val()).hasClass('unapproved') )
 			post.approve_parent = 1;
 
-		$.ajax({
+		// Fire the AJAX request.
+		commentReply.xhr = $.ajax({
 			type : 'POST',
 			url : ajaxurl,
 			data : post,
@@ -759,6 +775,7 @@
 			error : function(r) { commentReply.error(r); }
 		});
 
+		// @todo buttons should be buttons.
 		return false;
 	},
 
@@ -919,6 +936,12 @@
 	// Quick Edit and Reply have an inline comment editor.
 	$( '#the-comment-list' ).on( 'click', '.comment-inline', function (e) {
 		e.preventDefault();
+
+		// Don't open a new Quick Edit form when a previous Quick Edit request has not completed yet.
+		if ( commentReply.xhr && commentReply.xhr.readyState !== 4 ) {
+			return;
+		}
+
 		var $el = $( this ),
 			action = 'replyto';
 
Index: src/wp-admin/js/inline-edit-post.js
===================================================================
--- src/wp-admin/js/inline-edit-post.js	(revision 36349)
+++ src/wp-admin/js/inline-edit-post.js	(working copy)
@@ -51,6 +51,10 @@
 		// add events
 		$('#the-list').on( 'click', 'a.editinline', function( e ) {
 			e.preventDefault();
+			// Don't open a new Quick Edit form when a previous Quick Edit request has not completed yet.
+			if ( inlineEditPost.xhr && inlineEditPost.xhr.readyState !== 4 ) {
+				return;
+			}
 			inlineEditPost.edit(this);
 		});
 
@@ -77,11 +81,6 @@
 		});
 	},
 
-	toggle : function(el){
-		var t = this;
-		$( t.what + t.getId( el ) ).css( 'display' ) === 'none' ? t.revert() : t.edit( el );
-	},
-
 	setBulk : function(){
 		var te = '', type = this.type, tax, c = true;
 		this.revert();
@@ -253,6 +252,11 @@
 	save : function(id) {
 		var params, fields, page = $('.post_status_page').val() || '';
 
+		// Return and prevent form submitting if there's already an AJAX request in progress.
+		if ( inlineEditPost.xhr && inlineEditPost.xhr.readyState !== 4 ) {
+			return false;
+		}
+
 		if ( typeof(id) === 'object' ) {
 			id = this.getId(id);
 		}
@@ -270,8 +274,8 @@
 		fields = $('#edit-'+id).find(':input').serialize();
 		params = fields + '&' + $.param(params);
 
-		// make ajax request
-		$.post( ajaxurl, params,
+		// Fire the AJAX request.
+		inlineEditPost.xhr = $.post( ajaxurl, params,
 			function(r) {
 				var $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
 
@@ -280,8 +284,11 @@
 
 				if (r) {
 					if ( -1 !== r.indexOf( '<tr' ) ) {
+						// Get both the edited row and the empty row used to maintain zebra striping, then remove them.
 						$(inlineEditPost.what+id).siblings('tr.hidden').addBack().remove();
+						// Get the Quick Edit form, append the returned row before it and then remove it.
 						$('#edit-'+id).before(r).remove();
+						// Get the new appended row, ensure it's hidden then fade it in.
 						$( inlineEditPost.what + id ).hide().fadeIn( 400, function() {
 							// Move focus back to the Quick Edit link. $( this ) is the row being animated.
 							$( this ).find( '.editinline' ).focus();
@@ -325,7 +332,11 @@
 			}
 		}
 
-		return false;
+		// Try to abort any previous AJAX request when users click Cancel.
+		if ( inlineEditPost.xhr && inlineEditPost.xhr.readyState !== 4 ) {
+			inlineEditPost.xhr.abort();
+			inlineEditPost.xhr = null;
+		}
 	},
 
 	getId : function(o) {
Index: src/wp-admin/js/inline-edit-tax.js
===================================================================
--- src/wp-admin/js/inline-edit-tax.js	(revision 36349)
+++ src/wp-admin/js/inline-edit-tax.js	(working copy)
@@ -11,9 +11,13 @@
 		t.type = $('#the-list').attr('data-wp-lists').substr(5);
 		t.what = '#'+t.type+'-';
 
-		$('#the-list').on('click', 'a.editinline', function(){
+		$( '#the-list' ).on( 'click', 'a.editinline', function( e ) {
+			e.preventDefault();
+			// Don't open a new Quick Edit form when a previous Quick Edit request has not completed yet.
+			if ( inlineEditTax.xhr && inlineEditTax.xhr.readyState !== 4 ) {
+				return;
+			}
 			inlineEditTax.edit(this);
-			return false;
 		});
 
 		// prepare the edit row
@@ -40,11 +44,6 @@
 		});
 	},
 
-	toggle : function(el) {
-		var t = this;
-		$(t.what+t.getId(el)).css('display') === 'none' ? t.revert() : t.edit(el);
-	},
-
 	edit : function(id) {
 		var editRow, rowData, val,
 			t = this;
@@ -78,6 +77,11 @@
 	save : function(id) {
 		var params, fields, tax = $('input[name="taxonomy"]').val() || '';
 
+		// Return and prevent form submitting if there's already an AJAX request in progress.
+		if ( inlineEditTax.xhr && inlineEditTax.xhr.readyState !== 4 ) {
+			return false;
+		}
+
 		if( typeof(id) === 'object' ) {
 			id = this.getId(id);
 		}
@@ -94,8 +98,8 @@
 		fields = $('#edit-'+id).find(':input').serialize();
 		params = fields + '&' + $.param(params);
 
-		// make ajax request
-		$.post( ajaxurl, params,
+		// Fire the AJAX request.
+		inlineEditTax.xhr = $.post( ajaxurl, params,
 			function(r) {
 				var row, new_id, option_value,
 					$errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
@@ -104,9 +108,10 @@
 
 				if (r) {
 					if ( -1 !== r.indexOf( '<tr' ) ) {
+						// Get both the edited row and the empty row used to maintain zebra striping, then remove them.
 						$(inlineEditTax.what+id).siblings('tr.hidden').addBack().remove();
 						new_id = $(r).attr('id');
-
+						// Get the Quick Edit form, append the returned row before it and then remove it.
 						$('#edit-'+id).before(r).remove();
 
 						if ( new_id ) {
@@ -119,7 +124,7 @@
 
 						// Update the value in the Parent dropdown.
 						$( '#parent' ).find( 'option[value=' + option_value + ']' ).text( row.find( '.row-title' ).text() );
-
+						// Get the new appended row, ensure it's hidden then fade it in.
 						row.hide().fadeIn( 400, function() {
 							// Move focus back to the Quick Edit link.
 							row.find( '.editinline' ).focus();
@@ -151,6 +156,12 @@
 			// Show the taxonomy row and move focus back to the Quick Edit link.
 			$( this.what + id ).show().find( '.editinline' ).focus();
 		}
+
+		// Try to abort any previous AJAX request when users click Cancel.
+		if ( inlineEditTax.xhr && inlineEditTax.xhr.readyState !== 4 ) {
+			inlineEditTax.xhr.abort();
+			inlineEditTax.xhr = null;
+		}
 	},
 
 	getId : function(o) {
