code: func DeleteChangeSet(stackName string,
  	changeSetRequestName string,
  	awsCloudFormation *cloudformation.CloudFormation) (*cloudformation.DeleteChangeSetOutput, error) {
  
  	// Delete request...
  	deleteChangeSetInput := cloudformation.DeleteChangeSetInput{
  		ChangeSetName: aws.String(changeSetRequestName),
  		StackName:     aws.String(stackName),
  	}
  
  	startTime := time.Now()
  	for {
  		elapsedTime := time.Since(startTime)
  
  		deleteChangeSetResults, deleteChangeSetResultErr := awsCloudFormation.DeleteChangeSet(&deleteChangeSetInput)
  		if nil == deleteChangeSetResultErr {
  			return deleteChangeSetResults, nil
  		} else if strings.Contains(deleteChangeSetResultErr.Error(), "CREATE_IN_PROGRESS") {
  			if elapsedTime > cloudformationPollingTimeout {
  				return nil, fmt.Errorf("failed to delete ChangeSet within timeout window: %s", elapsedTime.String())
  			}
  			sleepDuration := cloudformationPollingDelay()
  			time.Sleep(sleepDuration)
  		} else {
  			return nil, deleteChangeSetResultErr
  		}
  	}
  }
docs: // DeleteChangeSet is a utility function that attempts to delete
  // an existing CloudFormation change set, with a bit of retry
  // logic in case of EC