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