/** * @param RequestInterface $request * * @return PromiseInterface */ public function sendRequest(RequestInterface $request) { if (isset($this->promises[$request->getRequestId()])) { return promise\reject(new ClientException("ID {$request->getRequestId()} already in use")); } $this->responseBuilders[$request->getRequestId()] = new ResponseParser($request->getRequestId()); $this->promises[$request->getRequestId()] = new Deferred(); foreach ($request->toRecords() as $record) { $this->connector->write($record->encode()); } return $this->promises[$request->getRequestId()]->promise(); }