<!-- Love localstack? Please consider supporting our collective:
👉  https://opencollective.com/localstack/donate -->

# Type of request: This is a ...

[ X ] bug report
[ ] feature request

# Detailed description
Issue originally described and fixed here https://github.com/localstack/localstack/issues/2055 has been reverted by a subsequent change. This PR reverted the fix: https://github.com/localstack/localstack/pull/2202 on file apigateway_listener.py

See original issue for full details.

## Actual behaviour

Serverless Lambda gives a 502 bad gateway response.

`localstack_1  | 2020-04-06T16:03:43:ERROR:localstack.services.generic_proxy: Error forwarding request: 'NoneType' object is not iterable Traceback (most recent call last):
localstack_1  |   File "/opt/code/localstack/localstack/services/generic_proxy.py", line 247, in forward
localstack_1  |     listener_result = listener.forward_request(method=method,
localstack_1  |   File "/opt/code/localstack/localstack/services/apigateway/apigateway_listener.py", line 47, in forward_request
localstack_1  |     return invoke_rest_api(api_id, stage, method, relative_path_w_query_params, data, headers, path=path)
localstack_1  |   File "/opt/code/localstack/localstack/services/apigateway/apigateway_listener.py", line 254, in invoke_rest_api
localstack_1  |     response.headers.update((parsed_result or {}).get('headers', {}))
localstack_1  |   File "/usr/lib/python3.8/_collections_abc.py", line 837, in update
localstack_1  |     for key, value in other:
localstack_1  | TypeError: 'NoneType' object is not iterable
`
func_arn = uri.split(':lambda:path')[1].split('functions/')[1].split('/invocations')[0]
            data_str = json.dumps(data) if isinstance(data, (dict, list)) else data
            account_id = uri.split(':lambda:path')[1].split(':function:')[0].split(':')[-1]
            source_ip = headers['X-Forwarded-For'].split(',')[-2]
            
            
            request_context = {
                'path': relative_path,
                'accountId': account_id,
                'resourceId': resource.get('id'),
                'stage': stage,
                'identity': {
                    'accountId': account_id,
                    'sourceIp': source_ip,
                    'userAgent': headers['User-Agent'],
                }
            }
            try:
                path_params = extract_path_params(path=relative_path, extracted_path=extracted_path)
            except Exception:
                path_params = {}
            result = lambda_api.process_apigateway_invocation(func_arn, relative_path, data_str,
                headers, path_params=path_params, query_string_params=query_string_params,
                method=method, resource_path=path, request_context=request_context)
            if isinstance(result, FlaskResponse):
                return flask_to_requests_response(result)
            if isinstance(result, Response):
                return result
            response = Response()
            parsed_result = result if isinstance(result, dict) else json.loads(str(result))