cleanup: avoid duped self-pipe init/replacement logic