Support user buffer for async reads