private boolean startNextDataSource() {
      Supplier<DataSource<T>> dataSourceSupplier = getNextSupplier();
      DataSource<T> dataSource = (dataSourceSupplier != null) ? dataSourceSupplier.get() : null;
      // NULLSAFE_FIXME[Parameter Not Nullable]
      if (setCurrentDataSource(dataSource) && dataSource != null) {
        dataSource.subscribe(new InternalDataSubscriber(), CallerThreadExecutor.getInstance());
        return true;
      } else {
        closeSafely(dataSource);
        return false;
      }
    }
{@link DataSource} supplier that provides a data source which will forward results of the first
available data source.

<p>Data sources are obtained in order. Only if the current data source fails, or if it finishes
without result, the next one will be tried.
fbcore/src/main/java/com/facebook/datasource/FirstAvailableDataSourceSupplier.java