Skip to content

Commit ea34298

Browse files
committed
Merge pull request #52 from weichenlin/master
Clear all listeners after "end" event
2 parents 74ad2f3 + 70eeae7 commit ea34298

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

src/Request.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ public function close(\Exception $error = null)
198198
}
199199

200200
$this->emit('end', array($error, $this->response, $this));
201+
$this->removeAllListeners();
201202
}
202203

203204
protected function parseResponse($data)

tests/RequestTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,19 @@ public function requestShouldRelayErrorEventsFromResponse()
453453
call_user_func($errorCallback, new \Exception('test'));
454454
}
455455

456+
/** @test */
457+
public function requestShouldRemoveAllListenerAfterClosed()
458+
{
459+
$requestData = new RequestData('GET', 'http://www.example.com');
460+
$request = new Request($this->connector, $requestData);
461+
462+
$request->on('end', function () {});
463+
$this->assertCount(1, $request->listeners('end'));
464+
465+
$request->close();
466+
$this->assertCount(0, $request->listeners('end'));
467+
}
468+
456469
private function successfulConnectionMock()
457470
{
458471
call_user_func($this->successfulAsyncConnectionMock());

0 commit comments

Comments
 (0)