public function getErrorMessage()
 {
     return $this->decorated->getErrorMessage();
 }
 /**
  * Starts the given flow.
  *
  * @param Flow $flow
  * @param bool $isSilent
  *
  * @return ExtendedPromiseInterface
  */
 private function startFlow(Flow $flow, $isSilent = false)
 {
     try {
         $packet = $flow->start();
     } catch (\Exception $e) {
         $this->emitError($e);
         return new RejectedPromise($e);
     }
     $deferred = new Deferred();
     $internalFlow = new ReactFlow($flow, $deferred, $packet, $isSilent);
     if ($packet !== null) {
         if ($this->stream->getBuffer()->listening) {
             $this->sendingFlows[] = $internalFlow;
         } else {
             $this->stream->write($packet);
             $this->writtenFlow = $internalFlow;
         }
     } else {
         $this->loop->nextTick(function () use($internalFlow) {
             $this->finishFlow($internalFlow);
         });
     }
     return $deferred->promise();
 }