Index: wp-includes/js/heartbeat.js
===================================================================
--- wp-includes/js/heartbeat.js	(revision 24731)
+++ wp-includes/js/heartbeat.js	(working copy)
@@ -40,10 +40,18 @@
 			isUserActive,
 			userActiveEvents,
 			winBlurTimeout,
-			frameBlurTimeout = -1;
+			frameBlurTimeout = -1,
+			hasConnectionError = false;
 
-		this.autostart = true;
-		this.connectionLost = false;
+		/**
+		 * Returns a boolean that's indicative of whether or not there is a connection error
+		 *
+		 * @returns boolean
+		 * @private
+		 */
+		this.hasConnectionError = function() {
+			return hasConnectionError;
+		};
 
 		if ( typeof( window.heartbeatSettings ) == 'object' ) {
 			settings = $.extend( {}, window.heartbeatSettings );
@@ -121,13 +129,13 @@
 						break;
 				}
 
-				if ( trigger && ! self.connectionLost ) {
-					self.connectionLost = true;
+				if ( trigger && ! self.hasConnectionError() ) {
+					hasConnectionError = true;
 					$(document).trigger( 'heartbeat-connection-lost', [error] );
 				}
-			} else if ( self.connectionLost ) {
+			} else if ( self.hasConnectionError() ) {
 				errorcount = 0;
-				self.connectionLost = false;
+				hasConnectionError = false;
 				$(document).trigger( 'heartbeat-connection-restored' );
 			}
 		}
@@ -152,7 +160,7 @@
 
 			// If nothing to send (nothing is expecting a response),
 			// schedule the next tick and bail
-			if ( empty && ! self.connectionLost ) {
+			if ( empty && ! self.hasConnectionError() ) {
 				connecting = false;
 				next();
 				return;
@@ -179,7 +187,7 @@
 					return errorstate( 'empty' );
 
 				// Clear error state
-				if ( self.connectionLost )
+				if ( self.hasConnectionError() )
 					errorstate();
 
 				if ( response.nonces_expired ) {
@@ -205,7 +213,7 @@
 				errorstate( textStatus || 'unknown' );
 				self.error( jqXHR, textStatus, error );
 			});
-		};
+		}
 
 		function next() {
 			var delta = time() - tick, t = interval;
@@ -332,19 +340,16 @@
 
 		// Check for user activity every 30 seconds.
 		window.setInterval( function(){ checkUserActive(); }, 30000 );
+		$(document).ready( function() {
+			// Start one tick (15 sec) after DOM ready
+			running = true;
+			tick = time();
+			next();
+		});
 
-		if ( this.autostart ) {
-			$(document).ready( function() {
-				// Start one tick (15 sec) after DOM ready
-				running = true;
-				tick = time();
-				next();
-			});
-		}
-
 		this.hasFocus = function() {
 			return hasFocus;
-		}
+		};
 
 		/**
 		 * Get/Set the interval
@@ -401,27 +406,6 @@
 			return tempInterval ? tempInterval / 1000 : interval / 1000;
 		};
 
-		// Start. Has no effect if heartbeat is already running
-		this.start = function() {
-			if ( running )
-				return false;
-
-			running = true;
-			connect();
-			return true;
-		};
-
-		// Stop. If a XHR is in progress, abort it
-		this.stop = function() {
-			if ( self.xhr && self.xhr.readyState != 4 )
-				self.xhr.abort();
-
-			// Reset the error state
-			errorstate();
-			running = false;
-			return true;
-		}
-
 		/**
 		 * Enqueue data to send with the next XHR
 		 *
@@ -447,7 +431,7 @@
 				return true;
 			}
 			return false;
-		}
+		};
 
 		/**
 		 * Check if data with a particular handle is queued
@@ -457,8 +441,8 @@
 		 */
 		this.isQueued = function( handle ) {
 			return queue[handle];
-		}
-	}
+		};
+	};
 
 	$.extend( Heartbeat.prototype, {
 		tick: function( data, textStatus, jqXHR ) {
Index: wp-includes/js/autosave.js
===================================================================
--- wp-includes/js/autosave.js	(revision 24731)
+++ wp-includes/js/autosave.js	(working copy)
@@ -242,7 +242,7 @@
 
 function autosave_enable_buttons() {
 	jQuery(document).trigger('autosave-enable-buttons');
-	if ( ! wp.heartbeat.connectionLost ) {
+	if ( ! wp.heartbeat.hasConnectionError() ) {
 		// delay that a bit to avoid some rare collisions while the DOM is being updated.
 		setTimeout(function(){
 			var parent = jQuery('#submitpost');
