diff --git a/src/com/android/contacts/SimImportFragment.java b/src/com/android/contacts/SimImportFragment.java
index 6042939..cee1b1a 100644
--- a/src/com/android/contacts/SimImportFragment.java
+++ b/src/com/android/contacts/SimImportFragment.java
@@ -55,6 +55,7 @@
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -477,7 +478,7 @@
                     simLoadResult.accounts = accounts;
                     return simLoadResult;
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
 
         private LoaderResult loadFromSim() {
diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java
index f67f074..34f9cb2 100644
--- a/src/com/android/contacts/model/AccountTypeManager.java
+++ b/src/com/android/contacts/model/AccountTypeManager.java
@@ -59,6 +59,7 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -503,7 +504,8 @@
     private synchronized void reloadAccountTypes() {
         loadAccountTypes();
         Futures.addCallback(
-                Futures.transform(mAccountTypesFuture, mAccountsExtractor),
+                Futures.transform(mAccountTypesFuture, mAccountsExtractor,
+                        MoreExecutors.directExecutor()),
                 newAccountsUpdatedCallback(mAccountManagerAccounts),
                 mMainThreadExecutor);
     }
@@ -534,7 +536,8 @@
         final ListenableFuture<List<List<AccountWithDataSet>>> all =
                 Futures.nonCancellationPropagating(
                         Futures.successfulAsList(
-                                Futures.transform(mAccountTypesFuture, mAccountsExtractor),
+                                Futures.transform(mAccountTypesFuture, mAccountsExtractor,
+                                        MoreExecutors.directExecutor()),
                                 mLocalAccountsFuture));
 
         return Futures.transform(all, new Function<List<List<AccountWithDataSet>>,
@@ -560,7 +563,7 @@
                 AccountInfo.sortAccounts(null, result);
                 return result;
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     @Override
diff --git a/src/com/android/contacts/util/concurrent/FuturesUtil.java b/src/com/android/contacts/util/concurrent/FuturesUtil.java
index 113af93..ba72446 100644
--- a/src/com/android/contacts/util/concurrent/FuturesUtil.java
+++ b/src/com/android/contacts/util/concurrent/FuturesUtil.java
@@ -3,9 +3,10 @@
 
 import android.os.Handler;
 
-import com.google.common.util.concurrent.FutureFallback;
+import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ScheduledExecutorService;
@@ -46,14 +47,14 @@
             }
         }, time, unit);
 
-        return Futures.withFallback(future, new FutureFallback<V>() {
+        return Futures.catchingAsync(future, Throwable.class, new AsyncFunction<Throwable, V>() {
             @Override
-            public ListenableFuture<V> create(Throwable t) throws Exception {
+            public ListenableFuture<V> apply(Throwable t) throws Exception {
                 if ((t instanceof CancellationException) && didTimeout.get()) {
                     return Futures.immediateFailedFuture(new TimeoutException("Timeout expired"));
                 }
                 return Futures.immediateFailedFuture(t);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 }
