Cleanup properly after asynchronous read
Disallow negative offsets/lengths for a vector read
Update tests