diff --git a/hgext/narrow/narrowcommands.py b/hgext/narrow/narrowcommands.py
index 693dda764efede2ee485c41dea0076e87525fd87_aGdleHQvbmFycm93L25hcnJvd2NvbW1hbmRzLnB5..06e75fbf9d6b57f030220254d908d84d5a2fb41e_aGdleHQvbmFycm93L25hcnJvd2NvbW1hbmRzLnB5 100644
--- a/hgext/narrow/narrowcommands.py
+++ b/hgext/narrow/narrowcommands.py
@@ -134,7 +134,7 @@
         return orig(pullop, kwargs)
 
     if wireprotoserver.NARROWCAP not in pullop.remote.capabilities():
-        raise error.Abort(_("server doesn't support narrow clones"))
+        raise error.Abort(_("server does not support narrow clones"))
     orig(pullop, kwargs)
     kwargs['narrow'] = True
     include, exclude = repo.narrowpats
@@ -408,6 +408,13 @@
         url, branches = hg.parseurl(remotepath)
         ui.status(_('comparing with %s\n') % util.hidepassword(url))
         remote = hg.peer(repo, opts, url)
+
+        # check narrow support before doing anything if widening needs to be
+        # performed. In future we should also abort if client is ellipses and
+        # server does not support ellipses
+        if widening and wireprotoserver.NARROWCAP not in remote.capabilities():
+            raise error.Abort(_("server does not support narrow clones"))
+
         commoninc = discovery.findcommonincoming(repo, remote)
 
         oldincludes, oldexcludes = repo.narrowpats
diff --git a/tests/test-narrow-clone-non-narrow-server.t b/tests/test-narrow-clone-non-narrow-server.t
index 693dda764efede2ee485c41dea0076e87525fd87_dGVzdHMvdGVzdC1uYXJyb3ctY2xvbmUtbm9uLW5hcnJvdy1zZXJ2ZXIudA==..06e75fbf9d6b57f030220254d908d84d5a2fb41e_dGVzdHMvdGVzdC1uYXJyb3ctY2xvbmUtbm9uLW5hcnJvdy1zZXJ2ZXIudA== 100644
--- a/tests/test-narrow-clone-non-narrow-server.t
+++ b/tests/test-narrow-clone-non-narrow-server.t
@@ -39,7 +39,7 @@
 
   $ hg clone --narrow --include f1 http://localhost:$HGPORT1/ narrowclone
   requesting all changes
-  abort: server doesn't support narrow clones
+  abort: server does not support narrow clones
   [255]
 
 Make a narrow clone (via HGPORT2), then try to narrow and widen
@@ -60,7 +60,5 @@
   looking for local changes to affected paths
   $ hg tracked --addinclude f1 http://localhost:$HGPORT1/
   comparing with http://localhost:$HGPORT1/
-  searching for changes
-  no changes found
-  abort: server doesn't support narrow clones
+  abort: server does not support narrow clones
   [255]
diff --git a/tests/test-narrow-clone.t b/tests/test-narrow-clone.t
index 693dda764efede2ee485c41dea0076e87525fd87_dGVzdHMvdGVzdC1uYXJyb3ctY2xvbmUudA==..06e75fbf9d6b57f030220254d908d84d5a2fb41e_dGVzdHMvdGVzdC1uYXJyb3ctY2xvbmUudA== 100644
--- a/tests/test-narrow-clone.t
+++ b/tests/test-narrow-clone.t
@@ -65,7 +65,7 @@
 
   $ hg clone --narrow master narrow-via-localpeer --noupdate --include "dir/src/f10"
   requesting all changes
-  abort: server doesn't support narrow clones
+  abort: server does not support narrow clones
   [255]
   $ hg tracked -R narrow-via-localpeer
   abort: repository narrow-via-localpeer not found!