fix promise setTimeout