message: Be robust with pipe closing
  Summary: This could happen for recursive usage.
diff: @@ -91,7 +91,9 @@ class BuckConnection:
  def __send_step(self, event: _RunningPart, status: str) -> None:
  message = self.__create_step_message(event, status)
  local = self.event_pipe
  - assert local
  + if not local:
  + return
  + try:
  local.write(str(len(BuckConnection.EVENT_TYPE_STEP)))
  local.write(os.linesep)
  local.write(BuckConnection.EVENT_TYPE_STEP)
  @@ -99,6 +101,9 @@ class BuckConnection:
  local.write(os.linesep)
  local.write(message)
  local.flush()
  + except BrokenPipeError:
  + self.has_buck = False
  + self.event_pipe = None
  def start(self, name: str, desc: str) -> None:
  if not self.has_buck:
  