Use futures instead of thread pools