expiring futures should raise TimeoutError
modify Future#value to raise TimeoutError when it expires