Implement ReadAsync to allow for cancellation.