diff --git a/driver-core/src/main/com/mongodb/connection/DefaultConnectionPool.java b/driver-core/src/main/com/mongodb/connection/DefaultConnectionPool.java
index ec1d234..c5b38f6 100644
--- a/driver-core/src/main/com/mongodb/connection/DefaultConnectionPool.java
+++ b/driver-core/src/main/com/mongodb/connection/DefaultConnectionPool.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008-2014 MongoDB, Inc.
+ * Copyright (c) 2008-2015 MongoDB, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -83,10 +83,10 @@ class DefaultConnectionPool implements ConnectionPool {
     @Override
     public InternalConnection get(final long timeout, final TimeUnit timeUnit) {
         try {
+            connectionPoolListener.waitQueueEntered(new ConnectionPoolWaitQueueEvent(serverId, currentThread().getId()));
             if (waitQueueSize.incrementAndGet() > settings.getMaxWaitQueueSize()) {
                 throw createWaitQueueFullException();
             }
-            connectionPoolListener.waitQueueEntered(new ConnectionPoolWaitQueueEvent(serverId, currentThread().getId()));
             PooledConnection pooledConnection = getPooledConnection(timeout, timeUnit);
             if (!pooledConnection.opened()) {
                 try {
diff --git a/driver-core/src/test/functional/com/mongodb/connection/DefaultConnectionPoolTest.java b/driver-core/src/test/functional/com/mongodb/connection/DefaultConnectionPoolTest.java
index 4d9cf11..3ec2228 100644
--- a/driver-core/src/test/functional/com/mongodb/connection/DefaultConnectionPoolTest.java
+++ b/driver-core/src/test/functional/com/mongodb/connection/DefaultConnectionPoolTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008-2014 MongoDB, Inc.
+ * Copyright (c) 2008-2015 MongoDB, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -227,4 +227,34 @@ public class DefaultConnectionPoolTest {
         // then
         assertTrue(connectionFactory.getCreatedConnections().get(0).isClosed());
     }
+
+    @Test
+    public void shouldNotCallWaitQueueExitedIfWaitQueueEnteredWasNotCalled() throws InterruptedException {
+        // given
+        QueueEventsConnectionPoolListener listener = new QueueEventsConnectionPoolListener();
+
+        provider = new DefaultConnectionPool(SERVER_ID, connectionFactory,
+                                             ConnectionPoolSettings.builder()
+                                                                   .maxSize(1)
+                                                                   .maxWaitQueueSize(1)
+                                                                   .maxWaitTime(500, MILLISECONDS)
+                                                                   .build(),
+                                             listener);
+
+        // when
+        provider.get();
+
+        new Thread(new TimeoutTrackingConnectionGetter(provider)).start();
+        Thread.sleep(100);
+
+        try {
+            provider.get();
+            fail();
+        } catch (MongoWaitQueueFullException e) {
+            // all good
+        }
+
+        // then
+        assertEquals(1, listener.getWaitQueueSize());
+    }
 }
diff --git a/driver-core/src/test/functional/com/mongodb/connection/QueueEventsConnectionPoolListener.java b/driver-core/src/test/functional/com/mongodb/connection/QueueEventsConnectionPoolListener.java
new file mode 100644
index 0000000..4f66d6b
--- /dev/null
+++ b/driver-core/src/test/functional/com/mongodb/connection/QueueEventsConnectionPoolListener.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2008-2015 MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.mongodb.connection;
+
+import com.mongodb.event.ConnectionPoolListenerAdapter;
+import com.mongodb.event.ConnectionPoolWaitQueueEvent;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+class QueueEventsConnectionPoolListener extends ConnectionPoolListenerAdapter {
+    private final AtomicInteger waitQueueSize = new AtomicInteger();
+
+    @Override
+    public void waitQueueExited(ConnectionPoolWaitQueueEvent event) {
+        waitQueueSize.decrementAndGet();
+    }
+
+    @Override
+    public void waitQueueEntered(ConnectionPoolWaitQueueEvent event) {
+        waitQueueSize.incrementAndGet();
+    }
+
+    public int getWaitQueueSize() {
+        return waitQueueSize.get();
+    }
+}
