swift wait for task to complete