diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java
index 81b3c5c..850c28c 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutors.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java
@@ -21,7 +21,7 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 
@@ -136,7 +136,7 @@
     return new DefaultDialerExecutorFactory().createNonUiTaskBuilder(Assert.isNotNull(worker));
   }
 
-  private static final Executor lowPriorityThreadPool =
+  private static final ExecutorService lowPriorityThreadPool =
       Executors.newFixedThreadPool(
           5,
           new ThreadFactory() {
@@ -155,7 +155,7 @@
    * <p>This exists to prevent each individual dialer component from having to create its own
    * threads/pools, which would result in the application having more threads than really necessary.
    */
-  public static Executor getLowPriorityThreadPool() {
+  public static ExecutorService getLowPriorityThreadPool() {
     return lowPriorityThreadPool;
   }
 }
diff --git a/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
index cc509f4..a00ee75 100644
--- a/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
+++ b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.phonenumberproto;
 
+import android.support.annotation.AnyThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.WorkerThread;
@@ -24,6 +25,8 @@
 import com.android.dialer.DialerPhoneNumber.RawInput;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.PhoneNumberUtil.MatchType;
@@ -46,7 +49,7 @@
   /**
    * Parses the provided raw phone number into a {@link DialerPhoneNumber}.
    *
-   * @see PhoneNumberUtil#parse(String, String)
+   * @see PhoneNumberUtil#parse(CharSequence, String)
    */
   @WorkerThread
   public DialerPhoneNumber parse(@Nullable String numberToParse, @Nullable String defaultRegion) {
@@ -73,6 +76,21 @@
   }
 
   /**
+   * Parses the provided raw phone number into a Future result of {@link DialerPhoneNumber}.
+   *
+   * <p>Work is run on the provided {@link ListeningExecutorService}.
+   *
+   * @see PhoneNumberUtil#parse(CharSequence, String)
+   */
+  @AnyThread
+  public ListenableFuture<DialerPhoneNumber> parse(
+      @Nullable String numberToParse,
+      @Nullable String defaultRegion,
+      @NonNull ListeningExecutorService service) {
+    return service.submit(() -> parse(numberToParse, defaultRegion));
+  }
+
+  /**
    * Returns true if the two numbers were parseable by libphonenumber and are an {@link
    * MatchType#EXACT_MATCH} or if they have the same raw input.
    */
