In corner cases, this may unnecessarily invalidate promises, consider the following sequence:
 * mget([a])
 * del(a)
 * mget([a])
 * the first mget([a]) returns and invalidates the promise

I wouldn't worry too much about this though. better safe than sorry.