Parser stops the action from firing if the container is closed. This is probably a good idea if ALL was used, or the player could get a number of repetitions of the same message. When ALL isn't used, it may be better to let the action routines handle it.
Also, consider removing a check like this in RemoveSub as well, as it will be checked anyway when calling TryToTakeNoun.