add custom job feature
correctly tell grunt async job is done once and only once