After a bit of testing, I found this solution using only existing stuff:
Concurrent.Future delay(Concurrent.Future f, int|float t) { return Concurrent.all(f, Concurrent.Promise()->timeout(t)->then(`+, `+)) ->transform(`[], 0, 0); }
Could easily be made into a method of Future (using promise_factory()) of course.