Skip to content

Commit 41b8f3e

Browse files
committed
Simplify buffer function
This avoids the extra Deferred and directly uses reject instead.
1 parent 1503761 commit 41b8f3e

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/functions.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,18 @@ function buffer(ReadableStreamInterface $stream, $maxLength = null)
2222
return Promise\resolve('');
2323
}
2424

25-
$deferred = new Promise\Deferred();
2625
$buffer = '';
27-
$bufferer = function ($data) use (&$buffer, $deferred, $maxLength) {
28-
$buffer .= $data;
29-
if ($maxLength !== null && isset($buffer[$maxLength])) {
30-
$deferred->reject(new \OverflowException('Buffer exceeded maximum length'));
31-
}
32-
};
33-
$stream->on('data', $bufferer);
3426

35-
$promise = new Promise\Promise(function ($resolve, $reject) use ($stream, $deferred, &$buffer) {
36-
$deferred->promise()->then($resolve, $reject);
27+
$promise = new Promise\Promise(function ($resolve, $reject) use ($stream, $maxLength, &$buffer, &$bufferer) {
28+
$bufferer = function ($data) use (&$buffer, $reject, $maxLength) {
29+
$buffer .= $data;
30+
31+
if ($maxLength !== null && isset($buffer[$maxLength])) {
32+
$reject(new \OverflowException('Buffer exceeded maximum length'));
33+
}
34+
};
35+
36+
$stream->on('data', $bufferer);
3737

3838
$stream->on('error', function ($error) use ($reject) {
3939
$reject(new \RuntimeException('An error occured on the underlying stream while buffering', 0, $error));

0 commit comments

Comments
 (0)