re-implement all
any and delay
re-implemnt always/never with Promise