Revert "Prevent concurrent retries of the same query (JAVA-449)."

This reverts commit c105d1217f71394ce166aa808d14705a35ae230b.
diff --git a/driver-core/CHANGELOG.rst b/driver-core/CHANGELOG.rst
index e91e2ba..481d46e 100644
--- a/driver-core/CHANGELOG.rst
+++ b/driver-core/CHANGELOG.rst
@@ -5,7 +5,6 @@
 ------
 
 - [bug] Handle null pool in PooledConnection.release (JAVA-449)
-- [bug] Prevent concurrent retries of the same query (JAVA-449)
 - [improvement] Defunct connection on request timeout (JAVA-425)
 - [improvement] Try next host when we get a SERVER_ERROR (JAVA-426)
 
diff --git a/driver-core/src/main/java/com/datastax/driver/core/RequestHandler.java b/driver-core/src/main/java/com/datastax/driver/core/RequestHandler.java
index 678541e..d3757c3 100644
--- a/driver-core/src/main/java/com/datastax/driver/core/RequestHandler.java
+++ b/driver-core/src/main/java/com/datastax/driver/core/RequestHandler.java
@@ -24,9 +24,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 import com.codahale.metrics.Timer;
 import org.slf4j.Logger;
@@ -72,10 +71,6 @@
     private final Timer.Context timerContext;
     private final long startTime;
 
-    // Tracks whether there is a retry already in progress
-    private final Lock retryLock = new ReentrantLock();
-    private Future<?> currentRetry; // guarded by retryLock
-
     public RequestHandler(SessionManager manager, Callback callback, Statement statement) {
         this.manager = manager;
         this.callback = callback;
@@ -167,34 +162,24 @@
     }
 
     private void retry(final boolean retryCurrent, ConsistencyLevel newConsistencyLevel) {
-        try {
-            // We lock to prevent two retries from launching concurrently
-            retryLock.lock();
+        final Host h = current;
+        this.retryConsistencyLevel = newConsistencyLevel;
 
-            if (currentRetry != null && !currentRetry.isDone())
-                return;
-
-            final Host h = current;
-            this.retryConsistencyLevel = newConsistencyLevel;
-
-            // We should not retry on the current thread as this will be an IO thread.
-            currentRetry = manager.executor().submit(new Runnable() {
-                @Override
-                public void run() {
-                    try {
-                        if (retryCurrent) {
-                            if (query(h))
-                                return;
-                        }
-                        sendRequest();
-                    } catch (Exception e) {
-                        setFinalException(null, new DriverInternalError("Unexpected exception while retrying query", e));
+        // We should not retry on the current thread as this will be an IO thread.
+        manager.executor().execute(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    if (retryCurrent) {
+                        if (query(h))
+                            return;
                     }
+                    sendRequest();
+                } catch (Exception e) {
+                    setFinalException(null, new DriverInternalError("Unexpected exception while retrying query", e));
                 }
-            });
-        } finally {
-            retryLock.unlock();
-        }
+            }
+        });
     }
 
     public void cancel() {