 <p>Let's start from the beginning. Since <code>fs</code> is a <code>List[Future[T]]</code>, you know <code>x</code> is a <code>Future[T]</code>.</p> <p>You need to register a callback that will fire when the result of <code>x</code> becomes available. The easy way to do this is with <code>onComplete</code>, which takes a function of type <code>Try[T] =&gt; U</code>. </p> <p>So the underscore is a <code>Try[T]</code>, which holds the result of <code>x</code>, the <code>Future[T]</code>. There are two possible results for a <code>Future</code>: <code>Success[T]</code>, when the <code>Future[T]</code> worked and holds a result, and <code>Failure[T]</code>, which holds an exception because the <code>Future[T]</code> didn't work. </p> <p>So <code>Try</code> is similar to <code>Option</code>, a way to safely represent an outcome.</p> <p>Hope that helps.</p>