improve async with Q