<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def request(self, url, extra_headers=None, params=None):
        'Make a GET request for url, with or without caching'
        if not url.startswith('http'):
            # relative url
            url = self.rootpath + url
        log.debug("getting url: %r, extra_headers=%r, params=%r", url, extra_headers, params)
        if extra_headers is None: extra_headers={}
        r = self.session.get(url, headers=extra_headers, params=params, timeout=1800) #max retries is set in __init__

        if r.status_code in ( 500, ):
            raise JFSError(r.reason)
        return r