/// <summary>
        /// Asynchronously waits till a table is created
        /// TODO: add a timeout
        /// </summary>
        private static async Task TillTableIsCreatedAsync(IAmazonDynamoDB client, string tableName)
        {
            string status = string.Empty;

            do
            {
                await Task.Delay(TimeSpan.FromSeconds(1));

                try
                {
#if AWSSDK_1_5
                    status = client.DescribeTable
                             (
                        new DescribeTableRequest {
                        TableName = tableName
                    }
                             )
                             .DescribeTableResult.Table.TableStatus;
#else
                    var response = await client.DescribeTableAsync
                                   (
                        new DescribeTableRequest { TableName = tableName }
                                   );

                    status = response.Table.TableStatus;
#endif
                }
                catch (ResourceNotFoundException)
                {
                }
            }while (status != "ACTIVE");
        }
        /// <summary>
        /// Asynchronously waits till a table is deleted
        /// TODO: add a timeout
        /// </summary>
        private static async Task TillTableIsDeletedAsync(IAmazonDynamoDB client, string tableName)
        {
            while (true)
            {
                await Task.Delay(TimeSpan.FromSeconds(1));

                try
                {
                    await client.DescribeTableAsync(new DescribeTableRequest { TableName = tableName });
                }
                catch (ResourceNotFoundException)
                {
                    break;
                }
            }
        }