it's building a dependency chain of futures, so future B starts executing after future A finishes successfully