There's no need to remove this synchronously.  The EJB spec says that a zero timeout means that the EJB is immediately *eligible* for removal, but not that it must be immediately removed.  I know this it nitpicking (since we're only talking about removing from a map), but mention this because I'm in the process of fixing this issue for distributable caches, where the cost of removal is not minimal.