'`extra_environ` is an optional dictionary that is also added
to the forwarded request.  E.g., ``{\'HTTP_HOST\': \'new.host\'}``
could be used to forward to a different virtual host.'

def __call__(self, path, extra_environ=None):

    environ = self.original_environ.copy()
    if extra_environ:
        environ.update(extra_environ)
    environ['paste.recursive.previous_environ'] = self.previous_environ
    base_path = self.original_environ.get('SCRIPT_NAME')
    if path.startswith('/'):
        assert path.startswith(base_path), ('You    can    only    forward    requests    to    resources    under    the    path    %r    (not    %r)' % (base_path, path))
        path = path[(len(base_path) + 1):]
    assert (not path.startswith('/'))
    path_info = ('/' + path)
    environ['PATH_INFO'] = path_info
    environ['REQUEST_METHOD'] = 'GET'
    environ['CONTENT_LENGTH'] = '0'
    environ['CONTENT_TYPE'] = ''
    environ['wsgi.input'] = StringIO('')
    return self.activate(environ)
