cleaned up util.deferral.DeferredCacher and bitcoin.p2p.HeightTracker
[p2pool.git] / p2pool / util / deferral.py
index 868649b..1db7d34 100644 (file)
@@ -149,14 +149,9 @@ class DeferredCacher(object):
     
     _nothing = object()
     def call_now(self, key, default=_nothing):
-        if key in self.waiting:
-            if default is not self._nothing:
-                return default
-            raise NotNowError(key)
-        
         if key in self.backing:
             return self.backing[key]
-        else:
+        if key not in self.waiting:
             self.waiting[key] = defer.Deferred()
             def cb(value):
                 self.backing[key] = value
@@ -168,6 +163,6 @@ class DeferredCacher(object):
                 fail.printTraceback()
                 print
             self.func(key).addCallback(cb).addErrback(eb)
-            if default is not self._nothing:
-                return default
-            raise NotNowError(key)
+        if default is not self._nothing:
+            return default
+        raise NotNowError(key)