adding a lazily evaluated promise type