diff --git a/closure/goog/events/events.js b/closure/goog/events/events.js
index <HASH>..<HASH> 100644
--- a/closure/goog/events/events.js
+++ b/closure/goog/events/events.js
@@ -250,13 +250,14 @@ goog.events.listen_ = function(
   // Attach the proxy through the browser's API
   if (src.addEventListener) {
     src.addEventListener(type.toString(), proxy, capture);
-  } else {
-    // The else above used to be else if (src.attachEvent) and then there was
-    // another else statement that threw an exception warning the developer
-    // they made a mistake. This resulted in an extra object allocation in IE6
-    // due to a wrapper object that had to be implemented around the element
-    // and so was removed.
+  } else if (src.attachEvent) {
+    // The else if above used to be an unconditional else. It would call
+    // exception on IE11, spoiling the day of some callers. The previous
+    // incarnation of this code, from 2007, indicates that it replaced an
+    // earlier still version that caused excess allocations on IE6.
     src.attachEvent(goog.events.getOnString_(type.toString()), proxy);
+  } else {
+    throw Error('addEventListener and attachEvent are unavailable.');
   }
 
   goog.events.listenerCountEstimate_++;
Automated g4 rollback

*** Reason for rollback ***

Fixed

*** Original change description ***

Automated g4 rollback

*** Reason for rollback ***

Breaks some ancient code

*** Original change description ***

Conditionally invoke attachEvent() in goog.events.listen_

attachEvent was deprecated in IE9 and remov...

***
-------------
Created by MOE: <URL>