public CosmosContext(CosmosConfig config)
        {
            _cache = new Cache("Cosmos", config.CacheMb);
            var retriesOn429Throttling = 1;          // Number of retries before failing processing when provisioned RU/s limit in CosmosDb is breached
            var timeout   = TimeSpan.FromSeconds(5); // Timeout applied per request to CosmosDb, including retry attempts
            var discovery = Discovery.ConnectionString.NewConnectionString(config.ConnectionStringWithUriAndKey);

            _connect = async() =>
            {
                var connector = new CosmosStoreConnector(discovery, timeout, retriesOn429Throttling, timeout, config.Mode);
                _store = await Connect(connector, config.Database, config.Container);
            };
        }
 static async Task <CosmosStoreContext> Connect(CosmosStoreConnector connector, string databaseId, string containerId)
 {
     var storeClient =
         await FSharpAsync.StartAsTask(
             CosmosStoreClient.Connect(
                 FuncConvert.FromFunc <(string, string)[], FSharpAsync <CosmosClient> >(connector.CreateAndInitialize),