Recommended way to implement a Channel consumer with async handlers & backpressure? - C#