diff --git a/wpull/http/request.py b/wpull/http/request.py
index <HASH>..<HASH> 100644
--- a/wpull/http/request.py
+++ b/wpull/http/request.py
@@ -91,6 +91,11 @@ class RawRequest(SerializableMixin, DictableMixin):
         '''Return a copy.'''
         return copy.deepcopy(self)
 
+    def set_continue(self, offset):
+        '''Modify the request into a range request.'''
+        assert offset >= 0, offset
+        self.fields['Range'] = 'bytes={0}-'.format(offset)
+
 
 class Request(RawRequest, URLPropertyMixin):
     '''Represents a higher level of HTTP request.
diff --git a/wpull/writer.py b/wpull/writer.py
index <HASH>..<HASH> 100644
--- a/wpull/writer.py
+++ b/wpull/writer.py
@@ -239,9 +239,9 @@ class BaseFileWriterSession(BaseWriterSession):
 
     def _process_file_continue_request(self, request):
         '''Modify the request to resume downloading file.'''
-        if os.path.exists(self._filename):
+        if os.path.exists(self._filename) and hasattr(request, 'set_continue'):
             size = os.path.getsize(self._filename)
-            request.fields['Range'] = 'bytes={0}-'.format(size)
+            request.set_continue(size)
 
             _logger.debug(__('Continue file from {0}.', size))
         else:
http.request,writer: Move the Range field setting into Request