cleanup look-ahead, fix cancellation exceptions bubbling out of readTask