In my template, I'm provisioning an ASG that uses an [EC2 Launch template](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html)

In the [`UserData`](https://docs.aws.amazon.com/en_pv/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-userdata) section, I do a [`cfn-init`](https://docs.aws.amazon.com/en_pv/AWSCloudFormation/latest/UserGuide/cfn-init.html) to provision the instance, which works fine.

However when I do the [`cfn-signal`](https://docs.aws.amazon.com/en_pv/AWSCloudFormation/latest/UserGuide/cfn-signal.html) command, the command is successful (exit code of 0), but the Cloudformation stack never receives it, and the stack creation/update fails with `Failed to receive 1 resource signal(s) for the current batch. Each resource signal timeout is counted as a FAILURE.`

When I check Cloudtrail, I see that the `SignalResource` API call was completed, signaling the correct Stack and resource with a `SUCCESS`, (but a `responseElements` of `null`)

Excerpt from my Cloudformation template:

```
Resources:
  MyLaunchTemplate:
      Type: AWS::EC2::LaunchTemplate
      Metadata:
        'AWS::CloudFormation::Init':
          configSets:
            # lots-o-stuff to be done by cfn-init
      Properties:
        LaunchTemplateData:
          # Remove other attributes for brevity
          UserData:
            Fn::Base64:
              !Sub |
                #!/bin/bash -x
                yum update -y
                # gather ENI
                /opt/aws/bin/cfn-init -c install \
                  --stack ${AWS::StackName} \
                  --resource MyLaunchTemplate \
                  --region ${AWS::Region}
                /opt/aws/bin/cfn-signal -e $? \
                  --stack ${AWS::StackName} \
                  --resource MyAsg \
                  --region ${AWS::Region}
                echo $?
        LaunchTemplateName: my-launch-template
  MyAsg:
    Type: AWS::AutoScaling::AutoScalingGroup
      CreationPolicy:
        AutoScalingCreationPolicy:
          MinSuccessfulInstancesPercent: 100
        ResourceSignal:
          Count: 1
          Timeout: PT10M
      UpdatePolicy:
        AutoScalingReplacingUpdate:
          WillReplace: true
      Properties:
        # Remove other attributes for brevity
        LaunchTemplate:
          LaunchTemplateId: !Ref MyLaunchTemplate
          Version: !GetAtt MyLaunchTemplate.LatestVersionNumber

```

Any idea what I'm missing here?