prepare-source use Async to instead of Q