Starts the job and returns a Future that completes with either the result of the job or an error if the job did not finish successfully.