def browser(tags=None, proxy=None, other_caps=None):
    browser_name = os.environ.get('SELENIUM_BROWSER', 'firefox')
    def browser_check_func():
        try:
            if _use_remote_browser(SAUCE_ENV_VARS):
                browser_class, browser_args, browser_kwargs = _remote_browser_class(
                    SAUCE_ENV_VARS, tags)
            elif _use_remote_browser(REMOTE_ENV_VARS):
                browser_class, browser_args, browser_kwargs = _remote_browser_class(
                    REMOTE_ENV_VARS, tags)
            else:
                browser_class, browser_args, browser_kwargs = _local_browser_class(
                    browser_name)
            if proxy:
                browser_kwargs = _proxy_kwargs(browser_name, proxy, browser_kwargs)
            if browser_class == webdriver.Remote:
                desired_caps = other_caps or {}
                desired_caps.update(browser_kwargs.get('desired_capabilities', {}))
                browser_kwargs['desired_capabilities'] = desired_caps
            return True, browser_class(*browser_args, **browser_kwargs)
        except (socket.error, WebDriverException) as err:
            msg = str(err)
            LOGGER.debug('Failed to instantiate browser: ' + msg)
            return False, None
    browser_instance = Promise(
        browser_check_func, "Browser is instantiated successfully.", try_limit=3, timeout=95).fulfill()
    return browser_instance