private BatchCellsWriter _BuildBatch(IEnumerable <CellInfo> cells, Guid task_id)
        {
            BatchCellsWriter writer = new BatchCellsWriter();

            writer.task_id = task_id;
            return(writer);
        }
        private async Task _SendBatch(BatchCellsWriter batch, DynamicRemoteStorage storage, SemaphoreSlim signal_c, ManualResetEventSlim signal_t)
        {
            await signal_c.WaitAsync();

            while (signal_t.IsSet)
            {
                await Task.Delay(1);
            }
            try
            {
                using (batch)
                {
                    using (var reader = await storage.BatchSaveCells(batch))
                    {
                        if (reader.throttle)
                        {
                            signal_t.Set();
                            Log.WriteLine($"{nameof(_SendBatch)}: throttled by remote storage {storage.ReplicaInformation.Id}");
                            await Task.Delay(1000);

                            signal_t.Reset();
                        }
                    }
                }
            }
            finally
            {
                signal_c.Release();
            }
        }