# Type of request: This is a ...

[X] bug report

# Detailed description
`EntityAlreadyExistsException` is not thrown correctly when creating IAM objects that are already present. `AmazonIdentityManagementException` with a null message is thrown instead

## Expected behavior
Localstack should throw `EntityAlreadyExistsException` with a populated message (not null)

## Actual behavior
```
com.amazonaws.services.identitymanagement.model.AmazonIdentityManagementException: null (Service: AmazonIdentityManagement; Status Code: 409; Error Code: 409 Conflict; Request ID: null)
```

# Steps to reproduce
- create an IAM role
- try to re-create it, catch `EntityAlreadyExistsException` but `AmazonIdentityManagementException` with null message is thrown instead

## Command used to start LocalStack
docker-compose up with `0.10.9`

## Client code (AWS SDK code snippet, or sequence of "awslocal" commands)
```
try {
    localStackIAMClient.createRole(createRoleRequest);
    localStackIAMClient.createRole(createRoleRequest);
} catch (EntityAlreadyExistsException e) {
    // AmazonIdentityManagementException with null is thrown instead
}
```

self.iam_client = aws_stack.connect_to_service('iam')
    def test_run_kcl_with_iam_assume_role(self):
        env_vars = {}
        if os.environ.get('AWS_ASSUME_ROLE_ARN'):
            env_vars['AWS_ASSUME_ROLE_ARN'] = os.environ.get('AWS_ASSUME_ROLE_ARN')
            env_vars['AWS_ASSUME_ROLE_SESSION_NAME'] = os.environ.get('AWS_ASSUME_ROLE_SESSION_NAME')
            env_vars['ENV'] = os.environ.get('ENV') or 'main'
            def process_records(records):
                print(records)
            
            stream_name = 'test-foobar'
            kinesis_connector.listen_to_kinesis(
                stream_name=stream_name,
                listener_func=process_records,
                env_vars=env_vars,
                kcl_log_level=logging.INFO,
                wait_until_started=True
            )
    def test_attach_iam_role_to_new_iam_user(self):