Try futures to handle timeouts