Index: tests/Request.html
===================================================================
--- tests/Request.html	(revision 10339)
+++ tests/Request.html	(working copy)
@@ -371,6 +371,22 @@
         teardown();
     }
 
+    function test_abort(t) {
+        t.plan(0);
+        var fail = false;
+        OpenLayers.Request.XMLHttpRequest.onsend = function(args) {
+            fail = true;
+        }
+        t.delay_call(0.5, function() {
+            if (fail === true) {
+                t.fail("Send should not be called because request is aborted");
+            }
+            OpenLayers.Request.XMLHttpRequest.onsend = null;
+        });
+        var protocol = new OpenLayers.Protocol.HTTP();
+        protocol.abort(protocol.read());
+    }
+
     </script>
 </head>
 <body>
Index: lib/OpenLayers/Request.js
===================================================================
--- lib/OpenLayers/Request.js	(revision 10339)
+++ lib/OpenLayers/Request.js	(working copy)
@@ -168,7 +168,9 @@
             request.send(config.data);
         } else {
             window.setTimeout(function(){
+                if (request._aborted !== true) {
                 request.send(config.data);
+                }
             }, 0);
         }
         return request;
