private async Task <OperationResponse <T> > ExecuteOperation <T>(IVirtualStudioOperation <T> operation)
        {
            OperationResponse <T> response = new OperationResponse <T>();

            if (virtualStudios.TryGetVirtualStudio(connectionIdToGroupMapping[Context.ConnectionId], out Core.VirtualStudio virtualStudio))
            {
                response.Data = await operation.Process(virtualStudio);

                if (operation.Error is null)
                {
                    response.Status = OperationStatus.Success;
                }
                else
                {
                    response.Status = OperationStatus.Error;
                    response.Error  = operation.Error;
                }
            }
            else
            {
                response.Status = OperationStatus.Error;
                response.Error  = new OperationError(ErrorType.NotAuthorized, "The user did not join a VirtualStudio.");
            }
            if (response.Status == OperationStatus.Error)
            {
                logger.LogWarning($"{operation}: Error: {response.Error.Type}, {response.Error.Message}");
            }
            else
            {
                logger.LogInformation($"{operation}: OK");
            }

            return(response);
        }
 private async Task <OperationResponse> ExecuteOperation(IVirtualStudioOperation <bool> operation)
 {
     return((await ExecuteOperation <bool>(operation)).WithoutData());
 }