observable.modify(): return whether the value was modified
request error: use req.response (not req.responseText) in error message, because that won't throw in the case of arraybuffer responses