memoizeWithExpiration will block threads if one is waiting on a result, or crashes when getting the result