diff -r e20c8ccbedd0 Overview.html
--- a/Overview.html	Tue Jul 24 20:11:57 2012 -0700
+++ b/Overview.html	Tue Sep 04 20:41:59 2012 +0200
@@ -1186,6 +1186,10 @@
           			<td><code><dfn>VersionError</dfn></code></td>
 	          		<td>An attempt was made to open a database using a lower version than the existing version.</td>
           		</tr>
+          		<tr>
+          			<td><code><dfn>BlockedError</dfn></code></td>
+	          		<td>Connections on another page didn't close when asked, thus blocking a database change request.</td>
+          		</tr>
           	</table>
 			<p>
 				IndexedDB reuses the following existing <a>DOMException</a> types from [[!DOM4]].  
@@ -1543,13 +1547,11 @@
             and an event with type <code>error</code> is fired at the request.
           </p>
           <p>
-            The <code>open</code> and <code>deleteDatabase</code> functions on <code><a>IDBFactory</a></code> 
-            uses a separate interface for its requests in order to make use of the 
-            <code>blocked event</code> and <code>upgradeneeded event</code> easier.
+            The <code>open</code> and <code>deleteDatabase</code> functions on <code><a>IDBFactory</a></code>
+            uses a separate interface for its requests in order to make use of the <code>upgradeneeded event</code>
+            easier.
           </p>
           <dl class="idl" title="interface IDBOpenDBRequest : IDBRequest"> 
-            <dt>[TreatNonCallableAsNull] attribute Function? onblocked</dt>
-            <dd>The event handler for the <code>blocked event</code></dd>
             <dt>[TreatNonCallableAsNull] attribute Function? onupgradeneeded</dt>
             <dd>The event handler for the <code>upgradeneeded event</code></dd>
           </dl>
@@ -4660,7 +4662,7 @@
             <li>
               <p>
                 Fire a <code>versionchange</code> event at each object in <var>openDatabases</var> that is open. The event MUST NOT
-                be fired on objects which has the <code>closePending</code> flag set. The event MUST use the
+                be fired on objects which has the <a>closePending</a> flag set. The event MUST use the
                 <a><code>IDBVersionChangeEvent</code></a> interface and have the
                 <a href="#widl-IDBVersionChangeEvent-oldVersion"><code>oldVersion</code></a> property set to <var>db</var>'s
                 <a>version</a> and have the <a href="#widl-IDBVersionChangeEvent-newVersion"><code>newVersion</code></a>
@@ -4675,20 +4677,15 @@
             </li>
             <li>
               <p>
-                If running asynchronously and any of the <a>connection</a>s in <var>openDatabases</var> are still not closed, 
-                queue up a <code>blocked</code> event for the <var>request</var>. The event MUST use the
-                <a><code>IDBVersionChangeEvent</code></a> interface and have the
-                <a href="#widl-IDBVersionChangeEvent-oldVersion"><code>oldVersion</code></a> property set to <var>db</var>'s
-                <a>version</a> and have the <a href="#widl-IDBVersionChangeEvent-newVersion"><code>newVersion</code></a>
-                property set to <var>version</var>.
-                This event MUST NOT bubble or be cancelable. The propagation path for the event is just <var>request</var>.
+                If any of the <a>connection</a>s in <var>openDatabases</var> are neither <a title="database close">closed</a>
+                nor have their <a>closePending</a> flag set after its <code>versionchange</code> handlers has run
+                to completion, abort these steps and return a <code>DOMError</code> of type <a>BlockedError</a>.
               </p>
             </li>
             <li id="version-change-close-block">
-              Wait until either all objects in <var>openDatabases</var> are <a title="database close">closed</a> and all of
-              their transactions are <a title="transaction finish">finished</a>.
+              Wait until all objects in <var>openDatabases</var> are <a title="database close">closed</a>.
               <p class="issue">If .close() is called immediately but a <a>transaction</a> associated with the <var>connection</var>
-              keeps running for a "long time", should we also fire a <code>blocked</code> event?</p>
+              keeps running for a "long time", we should probably give up and return a <a>BlockedError</a>.</p>
               <p class="issue">If, while we're waiting here, someone calls open with a version number higher than <var>version</var>,
               we should probably let that upgrade run first and bail here if it was successful</p>
             </li>
@@ -4821,7 +4818,7 @@
           <p>The <dfn>steps for closing a database connection</dfn> are as follows. These steps take one argument, a <var>connection</var> object.
           <ol>
             <li>
-              Set the internal <a><code>closePending</code></a> flag of <var>connection</var> to true.
+              Set the internal <a>closePending</a> flag of <var>connection</var> to true.
             </li>
             <li>
               Wait for all transactions <a title="transaction create">created</a> using <var>connection</var> to complete.
@@ -4829,7 +4826,7 @@
             </li>
           </ol>
           <p class="note">
-            Once the <a><code>closePending</code></a> flag has ben set to true no new transactions can be
+            Once the <a>closePending</a> flag has ben set to true no new transactions can be
             <a title="transaction create">created</a> using <var>connection</var>. All functions that
             <a title="transaction create">create</a> transactions first check the <a>closePending</a> flag first and
             throw an exception if it is true.
@@ -4867,7 +4864,7 @@
             <li>
               <p>
                 Fire a <code>versionchange</code> event at each object in <var>openDatabases</var> that is open. The event MUST NOT
-                be fired on objects which has the <code>closePending</code> flag set. The event MUST use the
+                be fired on objects which has the <a>closePending</a> flag set. The event MUST use the
                 <a><code>IDBVersionChangeEvent</code></a> interface and have the
                 <a href="#widl-IDBVersionChangeEvent-oldVersion"><code>oldVersion</code></a> property set to <var>db</var>'s
                 <a>version</a> and have the <a href="#widl-IDBVersionChangeEvent-newVersion"><code>newVersion</code></a>
@@ -4881,19 +4878,15 @@
             </li>
             <li>
               <p>
-                If any of the <a>connection</a>s in <var>openDatabases</var> are still not closed, and <var>request</var> was provided,
-                fire a <code>blocked</code> event at <var>request</var>. The event MUST use the
-                <a><code>IDBVersionChangeEvent</code></a> interface and have the
-                <a href="#widl-IDBVersionChangeEvent-oldVersion"><code>oldVersion</code></a> property set to <var>db</var>'s
-                <a>version</a> and have the <a href="#widl-IDBVersionChangeEvent-newVersion"><code>newVersion</code></a>
-                property set to <code>null</code>.
-                This event MUST NOT bubble or be cancelable.
-              </p>
+                If any of the <a>connection</a>s in <var>openDatabases</var> are neither <a title="database close">closed</a>
+                nor have their <a>closePending</a> flag set after its <code>versionchange</code> handlers
+                has run to completion, clear <var>db</var>'s <a>delete pending</a> flag, abort these steps and return a
+                <code>DOMError</code> of type <a>BlockedError</a>.  </p>
             </li>
             <li id="delete-close-block">
-              Wait until all objects in <var>openDatabases</var> are <a title="database close">closed</a> and all of
-              their transactions are <a title="transaction finish">finished</a>.
-              <p class="issue">Should we allow <code>blocked</code> to be fired here too, if waiting takes "too long"?</p>
+              Wait until all objects in <var>openDatabases</var> are <a title="database close">closed</a>.
+              <p class="issue">If .close() is called immediately but a <a>transaction</a> associated with the <var>connection</var>
+              keeps running for a "long time", we should probably give up and return a <a>BlockedError</a>.</p>
             </li>
             <li>
               Delete <var>db</var>.
