[v3] nullabilty in `Store.get`
In v3, store.get can return None.
For example, MemoryStore.get handles KeyError by returning None. However, that's the only exception handled this way, so basically None means KeyError for MemoryStore, which raises the question "why not just raise the KeyError"?
More broadly, do we want store classes to silently handle exceptions? Speaking for myself, I think exceptions should be handled higher up in the stack, and so I think I would prefer to see the store.get implementations only return if they successfully fetched bytes, and otherwise raise an exception. This makes the behavior of the store API easier to think about, I think this will cut down on the need for code higher in the stack to handle the possibility that something coming from the store is None, which can add up.
What do other people think?
cc @normanrz, because I think this design comes from Zarrita (correct me if I'm wrong)