Use the pattern matching DSL to automatically waits for unbound values

* .is<T> is not waiting and returns false if the value is unbound at that time.