The new method returns a `Promise` for the caller to use. The caller can call `get(timeout)` on returned `Promise` if they want to block for a certain amount of time.