Index: src/wp-includes/js/twemoji.js
===================================================================
--- src/wp-includes/js/twemoji.js	(revision 35633)
+++ src/wp-includes/js/twemoji.js	(working copy)
@@ -386,7 +386,7 @@
           );
           if (src) {
             img = new Image();
-            img.onerror = twemoji.onerror;
+            img.onerror = options.onerror;
             img.setAttribute('draggable', 'false');
             attrib = options.attributes(icon, variant);
             for (attrname in attrib) {
@@ -550,7 +550,8 @@
       base:       typeof how.base === 'string' ? how.base : twemoji.base,
       ext:        how.ext || twemoji.ext,
       size:       how.folder || toSizeSquaredAsset(how.size || twemoji.size),
-      className:  how.className || twemoji.className
+      className:  how.className || twemoji.className,
+      onerror:    how.onerror || twemoji.onerror
     });
   }
 
Index: src/wp-includes/js/wp-emoji.js
===================================================================
--- src/wp-includes/js/wp-emoji.js	(revision 35633)
+++ src/wp-includes/js/wp-emoji.js	(working copy)
@@ -58,7 +58,8 @@
 							ii === 1 && removedNodes.length === 1 &&
 							addedNodes[0].nodeType === 3 &&
 							removedNodes[0].nodeName === 'IMG' &&
-							addedNodes[0].data === removedNodes[0].alt
+							addedNodes[0].data === removedNodes[0].alt &&
+							'load-failed' === removedNodes[0].getAttribute( 'data-error' )
 						) {
 							return;
 						}
@@ -155,6 +156,12 @@
 					}
 
 					return ''.concat( options.base, icon, options.ext );
+				},
+				onerror: function() {
+					if ( twemoji.parentNode ) {
+						this.setAttribute( 'data-error', 'load-failed' );
+						twemoji.parentNode.replaceChild( document.createTextNode( twemoji.alt ), twemoji );
+					}
 				}
 			};
 
