If non-null, read throws this object instead of returning.
Note: the failed read still increments readCount and appends to readKeys (the attempt is observable).
Object? readError;