use core async to pipeline concurrent requests