call ReadAsync to avoid duplicated code