handle backpressure correctly