use namedtuples for CacheKey and CalcResult, also added Timeout checking for async_result