         (Just _, handles)  -> do
           case Map.member h handles of
             False -> return True
-            True  -> loopClientUntil client h (Nothing) v 
+            True  -> do 
+              back' <- performBackoff back (backoffCap . getConnectOptions $ client)
+              loopClientUntil client back' h (Nothing) v
     False -> return True
 
 -- | Peek at the value of an 'MVar' and return its contents if full.


-- | Run hyperclient_loop at most N times or forever until a handle
-- is returned.
loopClientUntil :: Client -> Handle -> Maybe Int -> MVar (Either ReturnCode a) -> IO (Bool)
loopClientUntil _      _ (Just 0) _ = return False

loopClientUntil client h (Just n) v = do
  empty <- isEmptyMVar v
  case empty of
    True -> do

          v <- newEmptyMVar :: IO (MVar (Either ReturnCode a))
          putMVar c (Just hc, Map.insert h (cont >>= putMVar v) handles)
          return $ do
            _ <- loopClientUntil client (backoff . getConnectOptions $ client) h Nothing v 
            res <- peekMVar v
            return $ fromMaybe (error "This should not occur!") res
        False -> do
