extensions/servlet/src/com/google/inject/servlet/ServletScopes.java
public static <T> Callable<T> scopeRequest(Callable<T> callable, Map<Key<?>, Object> seedMap) {
    return wrap(callable, scopeRequest(seedMap));
  }
public static <T> Callable<T> scopeRequest(Callable<T> callable, Map<Key<?>, Object> seedMap) {
    return wrap(callable, scopeRequest(seedMap));
  }
Scopes the given callable inside a request scope. This is not the same as the HTTP request
scope, but is used if no HTTP request scope is in progress. In this way, keys can be scoped
as @RequestScoped and exist in non-HTTP requests (for example: RPC requests) as well as in HTTP
request threads.

<p>The returned callable will throw a {@link ScopingException} when called if there is a
request scope already active on the current thread.

@param callable code to be executed which depends on the request scope. Typically in another
thread, but not necessarily so.
@param seedMap the initial set of scoped instances for Guice to seed the request scope with. To
seed a key with null, use {@code null} as the value.
@return a callable that when called will run inside the a request scope that exposes the
instances in the {@code seedMap} as scoped keys.
@since 3.0