use getString instead of readString
deal with same-class-calls in abstract closures (closes #2823)