public async Task <LabelModel> CreateLabelAsync(LabelModel newLabel, string requestId)
        {
            if (!(await CheckAndSaveRequestIdAsync(requestId)))
            {
                throw new AlreadyHandledException();
            }

            try
            {
                newLabel.Init();

                var outboxMessage = OutboxMessageModel.Create(
                    new LabelCreatedUpdatedMessage
                {
                    LabelId = newLabel.Id,
                    Title   = newLabel.Title,
                    Color   = newLabel.Color
                }, Topics.Labels, MessageActions.Created);

                return(await _labelsRepository.CreateLabelAsync(newLabel, outboxMessage));
            }
            catch (Exception)
            {
                //rollback request id
                await _requestsRepository.DeleteRequestIdAsync(requestId);

                throw;
            }
        }