Runs an array of promises in series, each passing their results to the next promise in the array. support an initialization parameter