Removed streaming
Added read timeout
Added cancel detection to stop unnecessary read/write