code: func (c *cachingECSClient) DescribeTaskDefinition(input *ecs.DescribeTaskDefinitionInput) (*ecs.DescribeTaskDefinitionOutput, error) {
  	if _, err := arn.Parse(*input.TaskDefinition); err != nil {
  		return c.ecsClient.DescribeTaskDefinition(input)
  	}
  
  	if v, ok := c.taskDefinitions.Get(*input.TaskDefinition); ok {
  		return &ecs.DescribeTaskDefinitionOutput{
  			TaskDefinition: v.(*ecs.TaskDefinition),
  		}, nil
  	}
  
  	resp, err := c.ecsClient.DescribeTaskDefinition(input)
  	if err != nil {
  		return resp, err
  	}
  
  	c.taskDefinitions.Set(*resp.TaskDefinition.TaskDefinitionArn, resp.TaskDefinition, 0)
  
  	return resp, err
  }
docs: // DescribeTaskDefinition will use the task definition from cache if provided
  // with a task definition ARN.