private void GlobalHandler(string _, PusherEvent evt) { // Get timestamp earliest possible (outside async) var timestamp = _clock.GetCurrentInstant(); async Task Inner() { await Task.Yield(); try { var data = TgbUtils.TryDecodePusherData(evt.Data); await _pusherEventStore.SaveEvent(evt.ChannelName, evt.EventName, timestamp, data, evt.Data); } catch (Exception e) { _logger.Error(e, "Error handling Pusher event {ChannelName}/{EventName}", evt.ChannelName, evt.EventName); } } // Fork var __ = Inner(); }
private Action <PusherEvent> WrapHandler(Func <JToken, Task> inner) { async Task Inner(PusherEvent evt) { try { _logger.Verbose("Received Pusher event {EventName} on {ChannelName}: {Data}", evt.EventName, evt.ChannelName, evt.Data); var data = TgbUtils.TryDecodePusherData(evt.Data); await inner(data); } catch (Exception e) { _logger.Error(e, "Error handling Pusher event {EventName}", evt.EventName); } } return(evt => { // Fork inner task var _ = Inner(evt); }); }