reimplement Fiber::join