public async Task SubscribeToEventAsync(ElectronAction <ElectronEventArguments> action, Func <Task> eventHandler)
        {
            var serializedObject = JsonConvert.SerializeObject(action, _serializerSettings);

            _eventHandlers.TryAdd(action.Id, eventHandler);

            await SendMessageAsync(serializedObject);
        }
        public async Task <ElectronResponse> SendActionAsync <TArgument>(ElectronAction <TArgument> action)
        {
            var serializedObject = JsonConvert.SerializeObject(action, _serializerSettings);

            await SendMessageAsync(serializedObject);

            return(await ReceiveResponseForActionAsync(action.Id));
        }
        public async Task UnSubscribeToEventAsync(Guid actionId)
        {
            var action = new ElectronAction
            {
                Id   = actionId,
                Type = ElectronRequestType.UnSubscribeEvent
            };

            var serializedObject = JsonConvert.SerializeObject(action, _serializerSettings);

            _eventHandlers.TryRemove(actionId, out _);

            await SendMessageAsync(serializedObject);
        }