private void ProcessEvents() {

    using (var client = redisManager.GetClient()) {
        // incoming events are JSON, so deserialize each one to IDictionary<>.
        var events = client.GetTypedClient<IDictionary<string, object>>().Lists["urn:events"];

        while (true) {
            // wait for next event, then convert it to an ExpandoObject;
            dynamic @event = events.BlockingDequeue(null).ToExpando();

            if (@event.Name == "User.ForgotPassword")
                SendForgottenPasswordEmail(@event.Email);
        }
    }
}