push() throws if head detached