code: def startProducing(self, consumer):
          
          self._task = self._cooperate(self._writeloop(consumer))
          d = self._task.whenDone()
          def maybeStopped(reason):
              # IBodyProducer.startProducing's Deferred isn't support to fire if
              # stopProducing is called.
              reason.trap(task.TaskStopped)
              return defer.Deferred()
          d.addCallbacks(lambda ignored: None, maybeStopped)
          return d
docs: Start a cooperative task which will read bytes from the input file and
          write them to C{consumer}.  Return a L{Deferred} which fires after all
          bytes have been written.
  
          @param consumer: Any L{IConsumer} provider