# any<T> method

Future<T> any <T>(Iterable<Future<T>> futures)

Returns the result of the first future in `futures` to complete.

The returned future is completed with the result of the first future in `futures` to report that it is complete, whether it's with a value or an error. The results of all the other futures are discarded.

If `futures` is empty, or if none of its futures complete, the returned future never completes.

## Implementation

    static Future<T> any<T>(Iterable<Future<T>> futures) {
      var completer = new Completer<T>.sync();
      var onValue = (T value) {
        if (!completer.isCompleted) completer.complete(value);
      };
      var onError = (error, StackTrace stack) {
        if (!completer.isCompleted) completer.completeError(error, stack);
      };
      for (var future in futures) {
        future.then(onValue, onError: onError);
      }
      return completer.future;
    }