/// <summary>
 /// Returns a future to a single value from a data-source; an exception
 /// is thrown if no values, or multiple values, are encountered.
 /// </summary>
 /// <param name="source">The source data-producer.</param>
 /// <exception cref="InvalidOperationException">Zero or multiple terms are encountered.</exception>
 public static IFuture <TSource> Single <TSource>(this IDataProducer <TSource> source)
 {
     return(source.Single(x => true));
 }