diff --git a/mwclient/client.py b/mwclient/client.py
index 4db12886521912760e51b8d1ff874cca40108b4c..617af8914bf62112e4ca650e25bd7508016e5aeb 100644
--- a/mwclient/client.py
+++ b/mwclient/client.py
@@ -352,6 +352,7 @@ class Site(object):
             data (dict): Post data
             files (dict): Files to upload
             retry_on_error (bool): Retry on connection error
+            http_method (str): The HTTP method, defaults to 'POST'
 
         Returns:
             The raw text response.
@@ -372,12 +373,16 @@ class Site(object):
 
         while True:
             try:
+                args = {'files': files, 'headers': headers}
+                for k, v in self.requests.items():
+                    args[k] = v
                 if http_method == 'GET':
-                    stream = self.connection.get(url, params=data, files=files,
-                                                 headers=headers, **self.requests)
+                    args['params'] = data
                 else:
-                    stream = self.connection.post(url, data=data, files=files,
-                                                  headers=headers, **self.requests)
+                    args['data'] = data
+
+                stream = self.connection.request(http_method, url, **args)
+
                 if stream.headers.get('x-database-lag'):
                     wait_time = int(stream.headers.get('retry-after'))
                     log.warning('Database lag exceeds max lag. '