Return completion in main thread