The following example `serverless.yml` fails to deploy on localstack:

```yaml
service: "localtest"

provider:
  name: "aws"
  runtime: "nodejs10.x"

functions:
  hello:
    handler: "handler.hello"
    
resources:
  Resources:
    ApiGatewayRestApi:
      Type: "AWS::ApiGateway::RestApi"
      Properties:
        Name: "${self:provider.stage}-${self:service}"
    GatewayResponseDefault400:
      Type: "AWS::ApiGateway::GatewayResponse"
      Properties:
        RestApiId:
          Ref: "ApiGatewayRestApi"
        ResponseType: "DEFAULT_4XX"
        ResponseTemplates:
          application/json: '{"errors":[{"message":"Custom text."}]}'
    GatewayResponseUnauthorized:
      Type: "AWS::ApiGateway::GatewayResponse"
      Properties:
        RestApiId:
          Ref: "ApiGatewayRestApi"
        ResponseType: "UNAUTHORIZED"
        ResponseTemplates:
          application/json: '{"errors":[{"message":"Custom text!", "extra":"Some extra info"}]}'
    GatewayResponseDefault500:
      Type: "AWS::ApiGateway::GatewayResponse"
      Properties:
        RestApiId:
          Ref: "ApiGatewayRestApi"
        ResponseType: "DEFAULT_5XX"
        ResponseTemplates:
          application/json: '{"errors":[{"message":$context.error.messageString}]}'
    GatewayResponseIntegrationTimeout:
      Type: "AWS::ApiGateway::GatewayResponse"
      Properties:
        RestApiId:
          Ref: "ApiGatewayRestApi"
        ResponseType: "INTEGRATION_TIMEOUT"
        ResponseTemplates:
          application/json: '{"errors":[{"message":$context.error.messageString}]}'

plugins:
- "serverless-localstack"

custom:
  localstack:
    stages:
      - "local"
```

The error on the localstack end is `Exception: CloudFormation deployment for resource type ApiGateway::GatewayResponse not yet implemented`.
if isinstance(value, dict):
        if len(value) == 1 and 'Ref' in value:
            result = resolve_ref(stack_name, value['Ref'],
                resources, attribute='PhysicalResourceId')
            return result
        elif len(value) == 1 and 'Fn::GetAtt' in value:
            return resolve_ref(stack_name, value['Fn::GetAtt'][0],
                resources, attribute=value['Fn::GetAtt'][1])
        else:
            for key, val in iteritems(value):
                value[key] = resolve_refs_recursively(stack_name, val, resources)
        
        if len(value) == 1 and 'Fn::Join' in value:
            return value['Fn::Join'][0].join(value['Fn::Join'][1])
        if len(value) == 1 and 'Fn::Sub' in value:
            result = value['Fn::Sub'][0]
            for key, val in value['Fn::Sub'][1].items():
                val = resolve_refs_recursively(stack_name, val, resources)
                result = result.replace('${%s}' % key, val)
            return result
    if isinstance(value, list):
        for i in range(0, len(value)):
            value[i] = resolve_refs_recursively(stack_name, value[i], resources)
    return value
def update_resource(resource_id, resources, stack_name):
    resource = resources[resource_id]
    resource_type = get_resource_type(resource)