Use events instead of callbacks for job completion