refactor future support a little and make timeout a duration again and add a default value for the timeout in the async result