diff --git a/jenkins/__init__.py b/jenkins/__init__.py
index ebfb5cf..8085ab0 100644
--- a/jenkins/__init__.py
+++ b/jenkins/__init__.py
@@ -273,6 +273,8 @@ class Jenkins(object):
                 )
             elif e.code == 404:
                 raise NotFoundException('Requested item could not be found')
+            else:
+                raise
         except URLError as e:
                 raise JenkinsException('Error in request: %s' % (e.reason))
 
diff --git a/tests/test_jenkins.py b/tests/test_jenkins.py
index 090e507..9341203 100644
--- a/tests/test_jenkins.py
+++ b/tests/test_jenkins.py
@@ -7,6 +7,7 @@ else:
 
 from mock import patch, Mock
 import six
+from six.moves.urllib.error import HTTPError
 
 from tests.helper import jenkins
 
@@ -222,6 +223,26 @@ class JenkinsTest(unittest.TestCase):
             jenkins_mock.call_args[0][0].get_full_url(),
             'http://example.com/job/TestJob')
 
+    @patch('jenkins.urlopen')
+    def test_jenkins_open__501(self, jenkins_mock):
+        jenkins_mock.side_effect = jenkins.HTTPError(
+            'http://example.com/job/TestJob',
+            code=501,
+            msg="Not implemented",
+            hdrs=[],
+            fp=None)
+        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
+        request = jenkins.Request('http://example.com/job/TestJob')
+
+        with self.assertRaises(HTTPError) as context_manager:
+            j.jenkins_open(request, add_crumb=False)
+        self.assertEqual(
+            str(context_manager.exception),
+            'HTTP Error 501: Not implemented')
+        self.assertEqual(
+            jenkins_mock.call_args[0][0].get_full_url(),
+            'http://example.com/job/TestJob')
+
     @patch('jenkins.urlopen')
     def test_jenkins_open__timeout(self, jenkins_mock):
         jenkins_mock.side_effect = jenkins.URLError(