Do you need to have a guard here to ensure that this callback() is not called twice? In the case where the request times out, then the cache callback returns?