I might be misunderstanding this but it appears as though this loop needs to delete everything from `cache` that is expired and if we leave entries without a ttl they will never be removed. Instead of returning this should remove it from the cache?