diff --git a/hgext3rd/topic/discovery.py b/hgext3rd/topic/discovery.py
index cd313b2e57fbad8b39bc748bfd82b9ab90bcee6d_aGdleHQzcmQvdG9waWMvZGlzY292ZXJ5LnB5..885a972d506963ad46af05819e7d84d0223e694b_aGdleHQzcmQvdG9waWMvZGlzY292ZXJ5LnB5 100644
--- a/hgext3rd/topic/discovery.py
+++ b/hgext3rd/topic/discovery.py
@@ -217,8 +217,14 @@
 #
 # Handle this by doing an extra check for new head creation server side
 def _nbheads(repo):
+    code = scmutil.filteredhash.__code__
+    if r'needobsolete' not in code.co_varnames[:code.co_argcount]:
+        # hg <= 6.0 (053a5bf508da)
+        filterfn = _filter_obsolete_heads
+    else:
+        filterfn = lambda repo, heads: heads
     data = {}
     for b in repo.branchmap().iterbranches():
         if b':' in b[0]:
             continue
         oldheads = [repo[n].rev() for n in b[1]]
@@ -220,9 +226,9 @@
     data = {}
     for b in repo.branchmap().iterbranches():
         if b':' in b[0]:
             continue
         oldheads = [repo[n].rev() for n in b[1]]
-        newheads = _filter_obsolete_heads(repo, oldheads)
+        newheads = filterfn(repo, oldheads)
         data[b[0]] = newheads
     return data