This also fixes a possible data eviction race condition between setting and getting a key. Another thread could remove the key before get_and_set() accesses it again. In this case, now the default value will be returned instead of None. Backport of 8e838d9c869083597dc9e161ae2fe37acaa90de9 from master