diff --git a/README.rst b/README.rst
index 94c27b3..1ea3d36 100644
--- a/README.rst
+++ b/README.rst
@@ -239,6 +239,25 @@ a callback function to give a slightly different result, you can use ``functools
         )
 
 
+You can see params passed in the original ‍‍``request`` in ‍‍``responses.calls[].request.params``:
+
+.. code-block:: python
+
+    import responses
+    import requests
+
+    @responses.activate
+    def test_request_params():
+        responses.add(
+            method=responses.GET,
+            url="http://example.com?hello=world",
+            body="test",
+            match_querystring=False,
+        )
+
+        resp = requests.get('http://example.com', params={"hello": "world"})
+        assert response.calls[0].request.params == {"hello": "world"}
+
 Responses as a context manager
 ------------------------------
 
@@ -352,7 +371,7 @@ Passing thru real requests
 --------------------------
 
 In some cases you may wish to allow for certain requests to pass thru responses
-and hit a real server. This can be done with the ``add_passthru' methods:
+and hit a real server. This can be done with the 'passthru' methods:
 
 .. code-block:: python
 
@@ -365,12 +384,6 @@ and hit a real server. This can be done with the ``add_passthru' methods:
 This will allow any requests matching that prefix, that is otherwise not registered
 as a mock response, to passthru using the standard behavior.
 
-Regex can be used like:
-
-.. code-block:: python
-
-    responses.add_passthru(re.compile('https://percy.io/\\w+'))
-
 
 Viewing/Modifying registered responses
 --------------------------------------
diff --git a/responses.py b/responses.py
index df42ef5..0c0f4f2 100644
--- a/responses.py
+++ b/responses.py
@@ -527,18 +527,14 @@ class RequestsMock(object):
 
     def add_passthru(self, prefix):
         """
-        Register a URL prefix or regex to passthru any non-matching mock requests to.
+        Register a URL prefix to passthru any non-matching mock requests to.
 
         For example, to allow any request to 'https://example.com', but require
         mocks for the remainder, you would add the prefix as so:
 
         >>> responses.add_passthru('https://example.com')
-
-        Regex can be used like:
-
-        >>> responses.add_passthru(re.compile('https://example.com/\\w+'))
         """
-        if not isinstance(prefix, Pattern) and _has_unicode(prefix):
+        if _has_unicode(prefix):
             prefix = _clean_unicode(prefix)
         self.passthru_prefixes += (prefix,)
 
@@ -626,16 +622,10 @@ class RequestsMock(object):
     def _on_request(self, adapter, request, **kwargs):
         match = self._find_match(request)
         resp_callback = self.response_callback
+        request.params = dict(parse_qsl(request.path_url.replace("/?", "")))
 
         if match is None:
-            if any(
-                [
-                    p.match(request.url)
-                    if isinstance(p, Pattern)
-                    else request.url.startswith(p)
-                    for p in self.passthru_prefixes
-                ]
-            ):
+            if request.url.startswith(self.passthru_prefixes):
                 logger.info("request.allowed-passthru", extra={"url": request.url})
                 return _real_send(adapter, request, **kwargs)
 
@@ -652,7 +642,7 @@ class RequestsMock(object):
 
         try:
             response = adapter.build_response(request, match.get_response(request))
-        except BaseException as response:
+        except Exception as response:
             match.call_count += 1
             self._calls.add(request, response)
             response = resp_callback(response) if resp_callback else response

Feature Request: Return requested params in responses.calls[].request
Similar to as discussed in #148 , when using the params parameter in requests, I need to set `match_querystring=False` to ignore the query string:

```
responses.add(
    method=responses.GET,
    url="http://example.com?hello=world,
    json={"response": "response"},
    status=200,
    match_querystring=False,
)
req = requests.get('http://example.com', params={"hello": "world"})
```

This returns a list of calls where I can get the requested URL:
```
print(requests.calls[0].request.url)
> http://example.com
```

However, theres no way to see what the original params passed in the original `request`. It would be nice to be able to also do something like the following so that I can very what the parameters are that were passed in the request:

```
print(requests.calls[0].request.params)
> {"hello": "world"}
```
diff --git a/test_responses.py b/test_responses.py
index af41f3a..6f4e534 100644
--- a/test_responses.py
+++ b/test_responses.py
@@ -749,9 +749,6 @@ def test_response_filebody():
 
 
 def test_assert_all_requests_are_fired():
-    def request_callback(request):
-        raise BaseException()
-
     def run():
         with pytest.raises(AssertionError) as excinfo:
             with responses.RequestsMock(assert_all_requests_are_fired=True) as m:
@@ -785,13 +782,6 @@ def test_assert_all_requests_are_fired():
                 requests.get("http://example.com")
             assert len(m._matches) == 1
 
-        with responses.RequestsMock(assert_all_requests_are_fired=True) as m:
-            m.add_callback(responses.GET, "http://example.com", request_callback)
-            assert len(m._matches) == 1
-            with pytest.raises(BaseException):
-                requests.get("http://example.com")
-            assert len(m._matches) == 1
-
     run()
     assert_reset()
 
@@ -953,28 +943,6 @@ def test_passthru(httpserver):
     assert_reset()
 
 
-def test_passthru_regex(httpserver):
-    httpserver.serve_content("OK", headers={"Content-Type": "text/plain"})
-
-    @responses.activate
-    def run():
-        responses.add_passthru(re.compile("{}/\\w+".format(httpserver.url)))
-        responses.add(responses.GET, "{}/one".format(httpserver.url), body="one")
-        responses.add(responses.GET, "http://example.com/two", body="two")
-
-        resp = requests.get("http://example.com/two")
-        assert_response(resp, "two")
-        resp = requests.get("{}/one".format(httpserver.url))
-        assert_response(resp, "one")
-        resp = requests.get("{}/two".format(httpserver.url))
-        assert_response(resp, "OK")
-        resp = requests.get("{}/three".format(httpserver.url))
-        assert_response(resp, "OK")
-
-    run()
-    assert_reset()
-
-
 def test_method_named_param():
     @responses.activate
     def run():
@@ -1022,3 +990,25 @@ def test_cookies_from_headers():
     for k, v in cookiejar.items():
         assert isinstance(v, str)
         assert v == expected[k]
+
+
+def test_request_param():
+    @responses.activate
+    def run():
+        params = {"hello": "world", "example": "params"}
+        responses.add(
+            method=responses.GET,
+            url="http://example.com?hello=world",
+            body="test",
+            match_querystring=False,
+        )
+        resp = requests.get("http://example.com", params=params)
+        assert_response(resp, "test")
+        assert resp.request.params == params
+
+        resp = requests.get("http://example.com")
+        assert_response(resp, "test")
+        assert resp.request.params == {}
+
+    run()
+    assert_reset()

pip install -e .[tests]
parse_log_pytest
requirements.txt
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi==2025.1.31
charset-normalizer==3.4.1
coverage==4.5.4
exceptiongroup==1.2.2
flake8==7.2.0
idna==3.10
iniconfig==2.1.0
MarkupSafe==3.0.2
mccabe==0.7.0
packaging==24.2
pluggy==1.5.0
pycodestyle==2.13.0
pyflakes==3.3.2
pytest==8.3.5
pytest-cov==2.10.1
pytest-localserver==0.9.0.post0
requests==2.32.3
-e git+https://github.com/getsentry/responses.git@db6d81d58e243ae90caf87c43c639eb8002d42a4#egg=responses
six==1.17.0
tomli==2.2.1
urllib3==2.3.0
Werkzeug==3.1.3

name: responses
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - coverage==4.5.4
      - exceptiongroup==1.2.2
      - flake8==7.2.0
      - idna==3.10
      - iniconfig==2.1.0
      - markupsafe==3.0.2
      - mccabe==0.7.0
      - packaging==24.2
      - pluggy==1.5.0
      - pycodestyle==2.13.0
      - pyflakes==3.3.2
      - pytest==8.3.5
      - pytest-cov==2.10.1
      - pytest-localserver==0.9.0.post0
      - requests==2.32.3
      - six==1.17.0
      - tomli==2.2.1
      - urllib3==2.3.0
      - werkzeug==3.1.3
prefix: /opt/conda/envs/responses

test_responses.py::test_request_param
test_responses.py::test_arbitrary_status_code
test_responses.py::test_response test_responses.py::test_response_encoded test_responses.py::test_response_with_instance test_responses.py::test_replace[http://example.com/two-http://example.com/two] test_responses.py::test_replace[original1-replacement1] test_responses.py::test_replace[http://example\\.com/two-http://example\\.com/two] test_responses.py::test_replace_error[http://example.com/one-http://example\\.com/one] test_responses.py::test_replace_error[http://example\\.com/one-http://example.com/one] test_responses.py::test_remove test_responses.py::test_response_equality[args10-kwargs10-args20-kwargs20-True] test_responses.py::test_response_equality[args11-kwargs11-args21-kwargs21-False] test_responses.py::test_response_equality[args12-kwargs12-args22-kwargs22-False] test_responses.py::test_response_equality[args13-kwargs13-args23-kwargs23-True] test_responses.py::test_response_equality_different_objects test_responses.py::test_connection_error test_responses.py::test_match_querystring test_responses.py::test_match_empty_querystring test_responses.py::test_match_querystring_error test_responses.py::test_match_querystring_regex test_responses.py::test_match_querystring_error_regex test_responses.py::test_match_querystring_auto_activates test_responses.py::test_accept_string_body test_responses.py::test_accept_json_body test_responses.py::test_no_content_type test_responses.py::test_throw_connection_error_explicit test_responses.py::test_callback test_responses.py::test_callback_exception_result test_responses.py::test_callback_exception_body test_responses.py::test_callback_no_content_type test_responses.py::test_regular_expression_url test_responses.py::test_custom_adapter test_responses.py::test_responses_as_context_manager test_responses.py::test_activate_doesnt_change_signature test_responses.py::test_activate_mock_interaction test_responses.py::test_activate_doesnt_change_signature_with_return_type test_responses.py::test_activate_doesnt_change_signature_for_method test_responses.py::test_response_cookies test_responses.py::test_response_secure_cookies test_responses.py::test_response_cookies_multiple test_responses.py::test_response_callback test_responses.py::test_response_filebody test_responses.py::test_assert_all_requests_are_fired test_responses.py::test_allow_redirects_samehost test_responses.py::test_handles_unicode_querystring test_responses.py::test_handles_unicode_url test_responses.py::test_headers test_responses.py::test_legacy_adding_headers test_responses.py::test_multiple_responses test_responses.py::test_multiple_urls test_responses.py::test_passthru test_responses.py::test_method_named_param test_responses.py::test_passthru_unicode test_responses.py::test_custom_target test_responses.py::test_cookies_from_headers
README.rst responses.py
README.rst responses.py