- which (if any) of these make sense for other refs?
- timeout seems really confusing for non-blocking
- has-value? could be trivially true for other refs
- but causes paranoia?
- overload deref for timeout, or new fn name?
- I want to know if a potentially blocking deref has a value
(.hasValue foo)for Promise