diff --git a/rbtools/api/decorators.py b/rbtools/api/decorators.py
index 1dae8fdd83ed86ca30c64bf89f500dc0ec245c53..5d3bba27033fee3b7746197f1c7725f8cd7f5b1c 100644
--- a/rbtools/api/decorators.py
+++ b/rbtools/api/decorators.py
@@ -1,3 +1,15 @@
+"""Decorators for API requests."""
+
+from __future__ import annotations
+
+from housekeeping import func_moved
+
+from rbtools.deprecation import RemovedInRBTools80Warning
+from rbtools.api.resource.base import request_method
+
+
+@func_moved(RemovedInRBTools80Warning,
+            request_method)
 def request_method_decorator(f):
     """Wrap a method returned from a resource to capture HttpRequests.
 
@@ -13,17 +25,4 @@ def request_method_decorator(f):
     Thus, any method calls embedded inside the code for another method
     should use the ``internal`` argument to access the expected value.
     """
-    def request_method(self, *args, **kwargs):
-        if kwargs.pop('internal', False):
-            return f(self, *args, **kwargs)
-        else:
-            def method_wrapper(*args, **kwargs):
-                return f(self, *args, **kwargs)
-
-            return self._transport.execute_request_method(method_wrapper,
-                                                          *args, **kwargs)
-
-    request_method.__name__ = f.__name__
-    request_method.__doc__ = f.__doc__
-    request_method.__dict__.update(f.__dict__)
-    return request_method
+    return request_method(f)
diff --git a/rbtools/api/resource/base.py b/rbtools/api/resource/base.py
index 59391a20d507fe04a95d7d1c4e970fc27875129c..43c8d003cea832802376d780d4151e10c2b94abc 100644
--- a/rbtools/api/resource/base.py
+++ b/rbtools/api/resource/base.py
@@ -13,7 +13,6 @@ from collections.abc import Iterator, MutableMapping
 from typing import Any, Optional
 from urllib.parse import urljoin
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.utils import rem_mime_format
 
@@ -41,6 +40,37 @@ def resource_mimetype(mimetype):
     return wrapper
 
 
+def request_method(f):
+    """Wrap a method returned from a resource to capture HttpRequests.
+
+    When a method which returns HttpRequests is called, it will
+    pass the method and arguments off to the transport to be executed.
+
+    This wrapping allows the transport to skim arguments off the top
+    of the method call, and modify any return values (such as executing
+    a returned HttpRequest).
+
+    However, if called with the ``internal`` argument set to True,
+    the method itself will be executed and the value returned as-is.
+    Thus, any method calls embedded inside the code for another method
+    should use the ``internal`` argument to access the expected value.
+    """
+    def request_method(self, *args, **kwargs):
+        if kwargs.pop('internal', False):
+            return f(self, *args, **kwargs)
+        else:
+            def method_wrapper(*args, **kwargs):
+                return f(self, *args, **kwargs)
+
+            return self._transport.execute_request_method(method_wrapper,
+                                                          *args, **kwargs)
+
+    request_method.__name__ = f.__name__
+    request_method.__doc__ = f.__doc__
+    request_method.__dict__.update(f.__dict__)
+    return request_method
+
+
 def _preprocess_fields(fields):
     """Pre-process request fields.
 
@@ -132,7 +162,7 @@ def _create_resource_for_field(parent_resource, field_payload,
                            guess_token=False)
 
 
-@request_method_decorator
+@request_method
 def _create(resource, data=None, query_args={}, *args, **kwargs):
     """Generate a POST request on a resource.
 
@@ -184,20 +214,20 @@ def _create(resource, data=None, query_args={}, *args, **kwargs):
     return request
 
 
-@request_method_decorator
+@request_method
 def _delete(resource, *args, **kwargs):
     """Generate a DELETE request on a resource."""
     return HttpRequest(resource._links['delete']['href'], method='DELETE',
                        query_args=kwargs)
 
 
-@request_method_decorator
+@request_method
 def _get_self(resource, *args, **kwargs):
     """Generate a request for a resource's 'self' link."""
     return HttpRequest(resource._links['self']['href'], query_args=kwargs)
 
 
-@request_method_decorator
+@request_method
 def _update(resource, data=None, query_args={}, *args, **kwargs):
     """Generate a PUT request on a resource.
 
@@ -429,7 +459,7 @@ class Resource(object):
         using array syntax."""
         return ResourceDictField(self, self._links)
 
-    @request_method_decorator
+    @request_method
     def _get_url(self, url, **kwargs):
         return HttpRequest(url, query_args=kwargs)
 
@@ -647,7 +677,7 @@ class ResourceLinkField(ResourceDictField):
         super(ResourceLinkField, self).__init__(resource, fields)
         self._transport = resource._transport
 
-    @request_method_decorator
+    @request_method
     def get(self, **query_args):
         return HttpRequest(self._fields['href'], query_args=query_args)
 
@@ -877,7 +907,7 @@ class CountResource(ItemResource):
         super(CountResource, self).__init__(transport, payload, url,
                                             token=None)
 
-    @request_method_decorator
+    @request_method
     def get_self(self, **kwargs):
         """Generate an GET request for the resource list.
 
@@ -970,21 +1000,21 @@ class ListResource(Resource):
         for i in range(self.num_items):
             yield self[i]
 
-    @request_method_decorator
+    @request_method
     def get_next(self, **kwargs):
         if 'next' not in self._links:
             raise StopIteration()
 
         return HttpRequest(self._links['next']['href'], query_args=kwargs)
 
-    @request_method_decorator
+    @request_method
     def get_prev(self, **kwargs):
         if 'prev' not in self._links:
             raise StopIteration()
 
         return HttpRequest(self._links['prev']['href'], query_args=kwargs)
 
-    @request_method_decorator
+    @request_method
     def get_item(self, pk, **kwargs):
         """Retrieve the item resource with the corresponding primary key."""
         return HttpRequest(urljoin(self._url, '%s/' % pk),
diff --git a/rbtools/api/resource/diff.py b/rbtools/api/resource/diff.py
index 052a66f71b1ee771512773143e2d5aaeb4d11e1b..6775cddd4234cc72967a2084b98398b3032c7ed3 100644
--- a/rbtools/api/resource/diff.py
+++ b/rbtools/api/resource/diff.py
@@ -9,11 +9,11 @@ from __future__ import annotations
 
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 from rbtools.api.resource.mixins import DiffUploaderMixin, GetPatchMixin
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
 class DiffResource(GetPatchMixin, ItemResource):
     """Item resource for diffs."""
 
-    @request_method_decorator
+    @request_method
     def finalize_commit_series(
         self,
         cumulative_diff: bytes,
@@ -79,7 +79,7 @@ class DiffResource(GetPatchMixin, ItemResource):
 class DiffListResource(DiffUploaderMixin, ListResource):
     """List resource for diffs."""
 
-    @request_method_decorator
+    @request_method
     def upload_diff(
         self,
         diff: bytes,
@@ -120,7 +120,7 @@ class DiffListResource(DiffUploaderMixin, ListResource):
             base_commit_id=base_commit_id,
             **kwargs)
 
-    @request_method_decorator
+    @request_method
     def create_empty(
         self,
         base_commit_id: Optional[str] = None,
diff --git a/rbtools/api/resource/diff_file_attachment.py b/rbtools/api/resource/diff_file_attachment.py
index 94be3995a45538636c01484539f750e2ee2fb657..e70a8900a5fb186cfab4d80f70983a6963aa263d 100644
--- a/rbtools/api/resource/diff_file_attachment.py
+++ b/rbtools/api/resource/diff_file_attachment.py
@@ -9,10 +9,10 @@ from __future__ import annotations
 
 from typing import TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 
@@ -37,7 +37,7 @@ class DiffFileAttachmentListResource(ListResource):
         5.0
     """
 
-    @request_method_decorator
+    @request_method
     def upload_attachment(
         self,
         *,
diff --git a/rbtools/api/resource/draft_diff_commit.py b/rbtools/api/resource/draft_diff_commit.py
index 81c086431936bdf7ae3c59cdecb1cd0226682060..faf8289c42d8efced60880edec446f5c26a824f9 100644
--- a/rbtools/api/resource/draft_diff_commit.py
+++ b/rbtools/api/resource/draft_diff_commit.py
@@ -10,11 +10,11 @@ from __future__ import annotations
 import logging
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 from rbtools.api.resource.mixins import GetPatchMixin
@@ -39,7 +39,7 @@ class DraftDiffCommitItemResource(GetPatchMixin, ItemResource):
 class DraftDiffCommitListResource(ListResource):
     """List resource for draft diff commits."""
 
-    @request_method_decorator
+    @request_method
     def upload_commit(
         self,
         validation_info: str,
diff --git a/rbtools/api/resource/file_attachment.py b/rbtools/api/resource/file_attachment.py
index 52459f545ef2ce80eac8febf2bfc56011aaaafa2..c4449f6c493fd4f8e7e6211e2dfdb5a878cfdd3e 100644
--- a/rbtools/api/resource/file_attachment.py
+++ b/rbtools/api/resource/file_attachment.py
@@ -9,11 +9,11 @@ from __future__ import annotations
 
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 
@@ -35,7 +35,7 @@ class FileAttachmentItemResource(ItemResource):
 class FileAttachmentListResource(ListResource):
     """List resource for file attachments."""
 
-    @request_method_decorator
+    @request_method
     def upload_attachment(
         self,
         filename: str,
diff --git a/rbtools/api/resource/file_diff.py b/rbtools/api/resource/file_diff.py
index 7da17cc797d87ee0903bc8860e40e36d2af2a5b8..4320717c32ad4b3d247fab199bc6009ec3d5c427 100644
--- a/rbtools/api/resource/file_diff.py
+++ b/rbtools/api/resource/file_diff.py
@@ -9,11 +9,11 @@ from __future__ import annotations
 
 from typing import TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 from rbtools.api.resource.mixins import GetPatchMixin
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
 class FileDiffResource(GetPatchMixin, ItemResource):
     """Item resource for file diffs."""
 
-    @request_method_decorator
+    @request_method
     def get_diff_data(
         self,
         **kwargs: QueryArgs,
diff --git a/rbtools/api/resource/mixins.py b/rbtools/api/resource/mixins.py
index ff269f699982002638540abaa45f40f7f9ea38d9..cb889536563160b608b8d0bb437477dae57daeb9 100644
--- a/rbtools/api/resource/mixins.py
+++ b/rbtools/api/resource/mixins.py
@@ -9,8 +9,8 @@ from __future__ import annotations
 
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
+from rbtools.api.resource.base import request_method
 
 if TYPE_CHECKING:
     from rbtools.api.request import QueryArgs
@@ -78,7 +78,7 @@ class GetPatchMixin:
 
     _url: str
 
-    @request_method_decorator
+    @request_method
     def get_patch(
         self,
         **kwargs: QueryArgs,
diff --git a/rbtools/api/resource/review_request.py b/rbtools/api/resource/review_request.py
index c1c06bd5a0a3261684b7191dcdcd278473821926..2dcd10866cd2a6f98938fa95a551ad7bacc98243 100644
--- a/rbtools/api/resource/review_request.py
+++ b/rbtools/api/resource/review_request.py
@@ -13,10 +13,10 @@ from urllib.parse import urljoin
 
 from typing_extensions import Self
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 from rbtools.utils.graphs import path_exists
@@ -62,7 +62,7 @@ class ReviewRequestResource(ItemResource):
         """
         return self._fields.get('url', f'/r/{self.id}/')
 
-    @request_method_decorator
+    @request_method
     def submit(
         self,
         description: Optional[str] = None,
@@ -94,7 +94,7 @@ class ReviewRequestResource(ItemResource):
 
         return self.update(data=data, internal=True)
 
-    @request_method_decorator
+    @request_method
     def get_or_create_draft(
         self,
         **kwargs: QueryArgs,
diff --git a/rbtools/api/resource/root.py b/rbtools/api/resource/root.py
index ef232b4662f9f057f8bb19070d01ddb87219cd80..3c26e11c81001ae73cc3c19443f0f6cee550c1a9 100644
--- a/rbtools/api/resource/root.py
+++ b/rbtools/api/resource/root.py
@@ -14,11 +14,11 @@ from packaging.version import parse as parse_version
 from typelets.json import JSONDict
 
 from rbtools.api.cache import MINIMUM_VERSION
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.resource.base import (
     ItemResource,
     ResourceDictField,
+    request_method,
     resource_mimetype,
 )
 
@@ -88,7 +88,7 @@ class RootResource(ItemResource):
             # bugs before this version). Disable caching.
             transport.disable_cache()
 
-    @request_method_decorator
+    @request_method
     def _get_template_request(
         self,
         url_template: str,
diff --git a/rbtools/api/resource/screenshot.py b/rbtools/api/resource/screenshot.py
index 9bbed4bc9e5557c80dc708a3c58f330e70e965f0..a1b0758f39cccf93c42b3f9f1ccbb28b35175cba 100644
--- a/rbtools/api/resource/screenshot.py
+++ b/rbtools/api/resource/screenshot.py
@@ -9,11 +9,11 @@ from __future__ import annotations
 
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
 from rbtools.api.resource.base import (
     ItemResource,
     ListResource,
+    request_method,
     resource_mimetype,
 )
 
@@ -34,7 +34,7 @@ class ScreenshotItemResource(ItemResource):
 class ScreenshotListResource(ListResource):
     """List resource for screenshots."""
 
-    @request_method_decorator
+    @request_method
     def upload_screenshot(
         self,
         filename: str,
diff --git a/rbtools/api/resource/validate_diff.py b/rbtools/api/resource/validate_diff.py
index ef2d77ffdbdb01eb521122538784aff930073534..d082adea588a68a1b7f2b449501b4b182f451d8c 100644
--- a/rbtools/api/resource/validate_diff.py
+++ b/rbtools/api/resource/validate_diff.py
@@ -9,8 +9,11 @@ from __future__ import annotations
 
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
-from rbtools.api.resource.base import ItemResource, resource_mimetype
+from rbtools.api.resource.base import (
+    ItemResource,
+    request_method,
+    resource_mimetype,
+)
 from rbtools.api.resource.mixins import DiffUploaderMixin
 
 if TYPE_CHECKING:
@@ -21,7 +24,7 @@ if TYPE_CHECKING:
 class ValidateDiffResource(DiffUploaderMixin, ItemResource):
     """Singleton resource for diff validation."""
 
-    @request_method_decorator
+    @request_method
     def validate_diff(
         self,
         repository: str,
diff --git a/rbtools/api/resource/validate_diff_commit.py b/rbtools/api/resource/validate_diff_commit.py
index 860244494874467a284731811b8e44c4d24ae98e..6bea58b93fb87addb950c1d8834e43b3a20b7877 100644
--- a/rbtools/api/resource/validate_diff_commit.py
+++ b/rbtools/api/resource/validate_diff_commit.py
@@ -9,9 +9,12 @@ from __future__ import annotations
 
 from typing import Optional, TYPE_CHECKING
 
-from rbtools.api.decorators import request_method_decorator
 from rbtools.api.request import HttpRequest
-from rbtools.api.resource.base import ItemResource, resource_mimetype
+from rbtools.api.resource.base import (
+    ItemResource,
+    request_method,
+    resource_mimetype,
+)
 
 if TYPE_CHECKING:
     from rbtools.api.request import QueryArgs
@@ -21,7 +24,7 @@ if TYPE_CHECKING:
 class ValidateDiffCommitResource(ItemResource):
     """Singleton resource for commit validation."""
 
-    @request_method_decorator
+    @request_method
     def validate_commit(
         self,
         repository: str,
