diff --git a/Lib/test/test_webbrowser.py b/Lib/test/test_webbrowser.py
index 7a396bd..71f2e27 100644
--- a/Lib/test/test_webbrowser.py
+++ b/Lib/test/test_webbrowser.py
@@ -1,5 +1,7 @@
 import webbrowser
 import unittest
+import os
+import sys
 import subprocess
 from unittest import mock
 from test import support
@@ -290,6 +292,23 @@
             webbrowser.get('fakebrowser')
         self.assertIsNotNone(webbrowser._tryorder)
 
+    def test_synthesize(self):
+        webbrowser = support.import_fresh_module('webbrowser')
+        name = os.path.basename(sys.executable).lower()
+        webbrowser.register(name, None, webbrowser.GenericBrowser(name))
+        webbrowser.get(sys.executable)
+
+    def test_environment(self):
+        webbrowser = support.import_fresh_module('webbrowser')
+        try:
+            browser = webbrowser.get().name
+        except (webbrowser.Error, AttributeError) as err:
+            self.skipTest(str(err))
+        with support.EnvironmentVarGuard() as env:
+            env["BROWSER"] = browser
+            webbrowser = support.import_fresh_module('webbrowser')
+            webbrowser.get()
+
 
 if __name__=='__main__':
     unittest.main()
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
index d717193..1e27c83 100755
--- a/Lib/webbrowser.py
+++ b/Lib/webbrowser.py
@@ -86,7 +86,7 @@
     return open(url, 2)
 
 
-def _synthesize(browser, update_tryorder=1):
+def _synthesize(browser, *, preferred=True):
     """Attempt to synthesize a controller base on existing controllers.
 
     This is useful to create a controller when a user specifies a path to
@@ -113,7 +113,7 @@
         controller = copy.copy(controller)
         controller.name = browser
         controller.basename = os.path.basename(browser)
-        register(browser, None, controller, update_tryorder)
+        register(browser, None, instance=controller, preferred=preferred)
         return [None, controller]
     return [None, None]
 
@@ -563,7 +563,7 @@
         # and prepend to _tryorder
         for cmdline in userchoices:
             if cmdline != '':
-                cmd = _synthesize(cmdline, -1)
+                cmd = _synthesize(cmdline, preferred=False)
                 if cmd[1] is None:
                     register(cmdline, None, GenericBrowser(cmdline), preferred=True)
 
