async workaround for grunt shell child process