diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java
index e101ff7252c06a28601f94a07949b6a22b3ecddb..8b4389e47da3a78db1799e995047e4516cc7bcc9 100644
--- a/core/java/src/net/i2p/client/I2PSessionImpl.java
+++ b/core/java/src/net/i2p/client/I2PSessionImpl.java
@@ -864,13 +864,16 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
             return null;
         LookupWaiter waiter = new LookupWaiter(h);
         _pendingLookups.offer(waiter);
-        sendMessage(new DestLookupMessage(h));
         try {
-            synchronized (waiter) {
-                waiter.wait(maxWait);
-            }
-        } catch (InterruptedException ie) {}
-        _pendingLookups.remove(waiter);
+            sendMessage(new DestLookupMessage(h));
+            try {
+                synchronized (waiter) {
+                    waiter.wait(maxWait);
+                }
+            } catch (InterruptedException ie) {}
+        } finally {
+            _pendingLookups.remove(waiter);
+        }
         return waiter.destination;
     }