diff --git a/CHANGES b/CHANGES
index f6a8d12..abc559b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,7 @@
 ------
 
 * Updated dependency to urllib3>=2 and requests>=2.30.0. See #635
+* Fixed issue when custom adapters were sending only positional args. See #642
 
 
 0.23.1
diff --git a/responses/__init__.py b/responses/__init__.py
index 32e7369..e020126 100644
--- a/responses/__init__.py
+++ b/responses/__init__.py
@@ -1099,9 +1099,27 @@ class RequestsMock(object):
             return
 
         def unbound_on_send(
-            adapter: "HTTPAdapter", request: "PreparedRequest", *a: Any, **kwargs: Any
+            adapter: "HTTPAdapter",
+            request: "PreparedRequest",
+            *args: Any,
+            **kwargs: Any,
         ) -> "models.Response":
-            return self._on_request(adapter, request, *a, **kwargs)
+            if args:
+                # that probably means that the request was sent from the custom adapter
+                # It is fully legit to send positional args from adapter, although,
+                # `requests` implementation does it always with kwargs
+                # See for more info: https://github.com/getsentry/responses/issues/642
+                try:
+                    kwargs["stream"] = args[0]
+                    kwargs["timeout"] = args[1]
+                    kwargs["verify"] = args[2]
+                    kwargs["cert"] = args[3]
+                    kwargs["proxies"] = args[4]
+                except IndexError:
+                    # not all kwargs are required
+                    pass
+
+            return self._on_request(adapter, request, **kwargs)
 
         self._patcher = std_mock.patch(target=self.target, new=unbound_on_send)
         self._patcher.start()

diff --git a/responses/tests/test_responses.py b/responses/tests/test_responses.py
index c264e4e..154e03a 100644
--- a/responses/tests/test_responses.py
+++ b/responses/tests/test_responses.py
@@ -801,34 +801,70 @@ def test_base_response_get_response():
         resp.get_response(requests.PreparedRequest())
 
 
-def test_custom_adapter():
-    @responses.activate
-    def run():
-        url = "http://example.com"
-        responses.add(responses.GET, url, body=b"test")
+class TestAdapters:
+    class CustomAdapter(requests.adapters.HTTPAdapter):
+        """Classic custom adapter."""
 
-        calls = [0]
+        def send(self, *a, **k):
+            return super().send(*a, **k)
 
-        class DummyAdapter(requests.adapters.HTTPAdapter):
-            def send(self, *a, **k):
-                calls[0] += 1
-                return super().send(*a, **k)
+    class PositionalArgsAdapter(requests.adapters.HTTPAdapter):
+        """Custom adapter that sends only positional args.
+        See https://github.com/getsentry/responses/issues/642 for more into.
+        """
 
-        # Test that the adapter is actually used
-        session = requests.Session()
-        session.mount("http://", DummyAdapter())
+        def send(
+            self,
+            request,
+            stream=False,
+            timeout=None,
+            verify=True,
+            cert=None,
+            proxies=None,
+        ):
+            return super().send(request, stream, timeout, verify, cert, proxies)
+
+    class PositionalArgsIncompleteAdapter(requests.adapters.HTTPAdapter):
+        """Custom adapter that sends only positional args.
+        Not all arguments are forwarded to the send method.
+                    See https://github.com/getsentry/responses/issues/642 for more into.
+        """
 
-        session.get(url, allow_redirects=False)
-        assert calls[0] == 1
+        def send(
+            self,
+            request,
+            stream=False,
+            timeout=None,
+            verify=True,
+            # following args are intentionally not forwarded
+            cert=None,
+            proxies=None,
+        ):
+            return super().send(request, stream, timeout, verify)
+
+    @pytest.mark.parametrize(
+        "adapter_class",
+        (CustomAdapter, PositionalArgsAdapter, PositionalArgsIncompleteAdapter),
+    )
+    def test_custom_adapter(self, adapter_class):
+        """Test basic adapter implementation and that responses can patch them properly."""
 
-        # Test that the response is still correctly emulated
-        session = requests.Session()
-        session.mount("http://", DummyAdapter())
+        @responses.activate
+        def run():
+            url = "http://example.com"
+            responses.add(responses.GET, url, body=b"test adapter")
 
-        resp = session.get(url)
-        assert_response(resp, "test")
+            # Test that the adapter is actually used
+            session = requests.Session()
+            adapter = adapter_class()
+            session.mount("http://", adapter)
+            with patch.object(adapter, "send", side_effect=adapter.send) as mock_send:
+                resp = session.get(url, allow_redirects=False)
 
-    run()
+            assert mock_send.call_count == 1
+            assert_response(resp, "test adapter")
+
+        run()
 
 
 def test_responses_as_context_manager():

_on_request raises a type error if arguments are explicitly passed to `send` method through an adapter
### Describe the bug

If you implement a custom adapter which explicitly passes the arguments expected by [HTTPAdapter.send](https://github.com/psf/requests/blob/v2.31.0/requests/adapters.py#L435) responses raises a `TypeError: RequestsMock._on_request() takes 3 positional arguments but 8 were given`.  If you simply have the adapter forward along `*args, **kwargs` everything seems to work properly.  This is what the current custom adapter test and test pass no problem.

I encountered this with the the 0.1.3.0 release of [CacheControl](https://pypi.org/project/CacheControl/).  If the custom adapter.

This problem seems similar to #138 

### Additional context

Tested Environment:
```
python: 3.10.3 & 3.8.12
requests: 2.31.0
responses: 0.23.1
```

### Version of `responses`

0.23.1

### Steps to Reproduce

```python
import requests
import responses

def test_breaking_custom_adapter():
    @responses.activate
    def run():
        url = "http://example.com"
        responses.add(responses.GET, url, body=b"test")

        calls = [0]

        class DummyAdapter(requests.adapters.HTTPAdapter):
            def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
                calls[0] += 1
                return super().send(request, stream, timeout, verify, cert, proxies)

        # Test that the adapter is actually used
        session = requests.Session()
        session.mount("http://", DummyAdapter())

        session.get(url, allow_redirects=False)
        assert calls[0] == 1

        print(f"Number of calls: {calls[0]}")

    run()


test_breaking_custom_adapter()
```

This is based off the current [custom adapter test](https://github.com/getsentry/responses/blob/master/responses/tests/test_responses.py#L804)

### Expected Result

A `TypeError` should be raised and the script should output `Number of calls: 1`

### Actual Result

```
Traceback (most recent call last):
  File "~/Projects/responses_arguments/test_responses.py", line 64, in <module>
    test_breaking_custom_adapter()
  File "~/Projects/responses_arguments/test_responses.py", line 61, in test_breaking_custom_adapter
    run()
  File "~/.virtualenvs/responses/lib/python3.10/site-packages/responses/__init__.py", line 218, in wrapper
    return func(*args, **kwargs)
  File "~/Projects/responses_arguments/test_responses.py", line 56, in run
    session.get(url, allow_redirects=False)
  File "~/.virtualenvs/responses/lib/python3.10/site-packages/requests/sessions.py", line 602, in get
    return self.request("GET", url, **kwargs)
  File "~/.virtualenvs/responses/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "~/.virtualenvs/responses/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "~/Projects/responses_arguments/test_responses.py", line 50, in send
    return super().send(request, stream, timeout, verify, cert, proxies)
  File "~/.virtualenvs/responses/lib/python3.10/site-packages/responses/__init__.py", line 1104, in unbound_on_send
    return self._on_request(adapter, request, *a, **kwargs)
TypeError: RequestsMock._on_request() takes 3 positional arguments but 8 were given
```
responses/tests/test_responses.py::TestAdapters::test_custom_adapter[PositionalArgsAdapter] responses/tests/test_responses.py::TestAdapters::test_custom_adapter[PositionalArgsIncompleteAdapter]
responses/tests/test_responses.py::test_response responses/tests/test_responses.py::test_response_encoded responses/tests/test_responses.py::test_response_with_instance responses/tests/test_responses.py::test_replace[http://example.com/two-http://example.com/two] responses/tests/test_responses.py::test_replace[original1-replacement1] responses/tests/test_responses.py::test_replace[http://example\\.com/two-http://example\\.com/two] responses/tests/test_responses.py::test_replace_error[http://example.com/one-http://example\\.com/one] responses/tests/test_responses.py::test_replace_error[http://example\\.com/one-http://example.com/one] responses/tests/test_responses.py::test_replace_response_object_error responses/tests/test_responses.py::test_upsert_replace[http://example.com/two-http://example.com/two] responses/tests/test_responses.py::test_upsert_replace[original1-replacement1] responses/tests/test_responses.py::test_upsert_replace[http://example\\.com/two-http://example\\.com/two] responses/tests/test_responses.py::test_upsert_add[http://example.com/two-http://example.com/two] responses/tests/test_responses.py::test_upsert_add[original1-replacement1] responses/tests/test_responses.py::test_upsert_add[http://example\\.com/two-http://example\\.com/two] responses/tests/test_responses.py::test_remove responses/tests/test_responses.py::test_response_equality[args10-kwargs10-args20-kwargs20-True] responses/tests/test_responses.py::test_response_equality[args11-kwargs11-args21-kwargs21-False] responses/tests/test_responses.py::test_response_equality[args12-kwargs12-args22-kwargs22-False] responses/tests/test_responses.py::test_response_equality[args13-kwargs13-args23-kwargs23-True] responses/tests/test_responses.py::test_response_equality_different_objects responses/tests/test_responses.py::test_connection_error responses/tests/test_responses.py::test_match_querystring responses/tests/test_responses.py::test_match_querystring_empty responses/tests/test_responses.py::test_match_querystring_error responses/tests/test_responses.py::test_match_querystring_regex responses/tests/test_responses.py::test_match_querystring_error_regex responses/tests/test_responses.py::test_match_querystring_auto_activates responses/tests/test_responses.py::test_match_querystring_missing_key responses/tests/test_responses.py::test_accept_string_body responses/tests/test_responses.py::test_accept_json_body responses/tests/test_responses.py::test_no_content_type responses/tests/test_responses.py::test_arbitrary_status_code responses/tests/test_responses.py::test_throw_connection_error_explicit responses/tests/test_responses.py::test_callback responses/tests/test_responses.py::test_deprecated_package_attributes responses/tests/test_responses.py::test_callback_deprecated_stream_argument responses/tests/test_responses.py::test_callback_deprecated_match_querystring_argument responses/tests/test_responses.py::test_callback_match_querystring_default_false responses/tests/test_responses.py::test_callback_exception_result responses/tests/test_responses.py::test_callback_exception_body responses/tests/test_responses.py::test_callback_no_content_type responses/tests/test_responses.py::test_callback_content_type_dict responses/tests/test_responses.py::test_callback_matchers responses/tests/test_responses.py::test_callback_matchers_fail responses/tests/test_responses.py::test_callback_content_type_tuple responses/tests/test_responses.py::test_regular_expression_url responses/tests/test_responses.py::test_base_response_get_response responses/tests/test_responses.py::TestAdapters::test_custom_adapter[CustomAdapter] responses/tests/test_responses.py::test_responses_as_context_manager responses/tests/test_responses.py::test_activate_doesnt_change_signature responses/tests/test_responses.py::TestFixtures::test_function responses/tests/test_responses.py::TestFixtures::test_function_decorated responses/tests/test_responses.py::test_activate_mock_interaction responses/tests/test_responses.py::test_activate_doesnt_change_signature_with_return_type responses/tests/test_responses.py::test_activate_doesnt_change_signature_for_method responses/tests/test_responses.py::test_response_cookies responses/tests/test_responses.py::test_response_cookies_secure responses/tests/test_responses.py::test_response_cookies_multiple responses/tests/test_responses.py::test_response_cookies_session[True-True] responses/tests/test_responses.py::test_response_cookies_session[True-False] responses/tests/test_responses.py::test_response_cookies_session[True-None] responses/tests/test_responses.py::test_response_cookies_session[False-True] responses/tests/test_responses.py::test_response_cookies_session[False-False] responses/tests/test_responses.py::test_response_cookies_session[False-None] responses/tests/test_responses.py::test_response_cookies_session[None-True] responses/tests/test_responses.py::test_response_cookies_session[None-False] responses/tests/test_responses.py::test_response_cookies_session[None-None] responses/tests/test_responses.py::test_response_callback responses/tests/test_responses.py::test_response_filebody responses/tests/test_responses.py::test_use_stream_twice_to_double_raw_io responses/tests/test_responses.py::test_assert_all_requests_are_fired responses/tests/test_responses.py::test_assert_all_requests_fired_multiple responses/tests/test_responses.py::test_allow_redirects_samehost responses/tests/test_responses.py::test_path_segments responses/tests/test_responses.py::test_handles_unicode_querystring responses/tests/test_responses.py::test_handles_unicode_url responses/tests/test_responses.py::test_handles_unicode_body responses/tests/test_responses.py::test_handles_buffered_reader_body responses/tests/test_responses.py::test_headers responses/tests/test_responses.py::test_content_length_error responses/tests/test_responses.py::test_stream_with_none_chunk_size responses/tests/test_responses.py::test_legacy_adding_headers responses/tests/test_responses.py::test_legacy_adding_headers_with_content_type responses/tests/test_responses.py::test_auto_calculate_content_length_string_body responses/tests/test_responses.py::test_auto_calculate_content_length_bytes_body responses/tests/test_responses.py::test_auto_calculate_content_length_json_body responses/tests/test_responses.py::test_auto_calculate_content_length_unicode_body responses/tests/test_responses.py::test_auto_calculate_content_length_doesnt_work_for_buffered_reader_body responses/tests/test_responses.py::test_auto_calculate_content_length_doesnt_override_existing_value responses/tests/test_responses.py::test_multiple_responses responses/tests/test_responses.py::test_multiple_responses_intermixed responses/tests/test_responses.py::test_multiple_urls responses/tests/test_responses.py::test_multiple_methods responses/tests/test_responses.py::test_passthrough_flag responses/tests/test_responses.py::test_passthrough_kwarg responses/tests/test_responses.py::test_passthrough_response responses/tests/test_responses.py::test_passthrough_response_stream responses/tests/test_responses.py::test_passthru_prefixes responses/tests/test_responses.py::test_passthru responses/tests/test_responses.py::test_passthru_regex responses/tests/test_responses.py::test_passthru_does_not_persist_across_tests responses/tests/test_responses.py::test_method_named_param responses/tests/test_responses.py::test_passthru_unicode responses/tests/test_responses.py::test_custom_target responses/tests/test_responses.py::test_request_param[http://example.com] responses/tests/test_responses.py::test_request_param[http://example.com/some/path] responses/tests/test_responses.py::test_request_param[http://example.com/other/path/] responses/tests/test_responses.py::test_request_param_with_multiple_values_for_the_same_key responses/tests/test_responses.py::test_assert_call_count[http://example.com] responses/tests/test_responses.py::test_assert_call_count[http://example.com?hello=world] responses/tests/test_responses.py::test_call_count_with_matcher responses/tests/test_responses.py::test_call_count_without_matcher responses/tests/test_responses.py::test_fail_request_error responses/tests/test_responses.py::test_response_representations[response_params0-<Response(url='http://example.com/' responses/tests/test_responses.py::test_response_representations[response_params1-<Response(url='http://another-domain.com/' responses/tests/test_responses.py::test_response_representations[response_params2-<Response(url='http://abcd.com/' responses/tests/test_responses.py::test_mocked_responses_list_registered responses/tests/test_responses.py::test_rfc_compliance[http://service-A/foo?q=fizz-http://service-a/foo?q=fizz] responses/tests/test_responses.py::test_rfc_compliance[http://service-a/foo-http://service-A/foo] responses/tests/test_responses.py::test_rfc_compliance[http://someHost-AwAy/-http://somehost-away/] responses/tests/test_responses.py::test_rfc_compliance[http://fizzbuzz/foo-http://fizzbuzz/foo] responses/tests/test_responses.py::test_requests_between_add responses/tests/test_responses.py::test_responses_reuse responses/tests/test_responses.py::TestStrictWrapper::test_strict_wrapper responses/tests/test_responses.py::TestStrictWrapper::test_nested_decorators[True] responses/tests/test_responses.py::TestStrictWrapper::test_nested_decorators[False] responses/tests/test_responses.py::TestStrictWrapper::test_nested_decorators[None] responses/tests/test_responses.py::TestMultipleWrappers::test_wrapped responses/tests/test_responses.py::TestMultipleWrappers::test_call_another_wrapped_function responses/tests/test_responses.py::TestMultipleWrappers::test_mock_not_leaked responses/tests/test_responses.py::TestShortcuts::test_delete responses/tests/test_responses.py::TestShortcuts::test_get responses/tests/test_responses.py::TestShortcuts::test_head responses/tests/test_responses.py::TestShortcuts::test_options responses/tests/test_responses.py::TestShortcuts::test_patch responses/tests/test_responses.py::TestShortcuts::test_post responses/tests/test_responses.py::TestShortcuts::test_put responses/tests/test_responses.py::test_reset_in_the_middle responses/tests/test_responses.py::test_redirect responses/tests/test_responses.py::TestMaxRetry::test_max_retries responses/tests/test_responses.py::TestMaxRetry::test_max_retries_exceed[True] responses/tests/test_responses.py::TestMaxRetry::test_max_retries_exceed[False] responses/tests/test_responses.py::TestMaxRetry::test_max_retries_exceed_msg responses/tests/test_responses.py::TestMaxRetry::test_adapter_retry_untouched responses/tests/test_responses.py::test_request_object_attached_to_exception