optimize makeFuture and Future<T>::Future()