implmented Y.delay(), promise.delay() and promise.timeout()