client.auth is asynchronous, so this isn't in sequence.  flatMap is the sequence operator for Futures.  Here's one possible way of implementing this:

```scala
val authed = authPassword.map(p => client.auth(StringToChannelBuffer(p))) getOrElse Future.Done
Await.result(authed before Future.value(new RedisIndex {
  val database = client
  val ttl = Some(self.ttl)
}), 10.seconds)
```