private function sumMultipartFieldLengths(array $fields)
{
$lengths = [];
foreach ($fields as $field) {
if (is_string($field)) {
$lengths[] = strlen($field);
} else {
$lengths[] = $field->getLength();
}
}
$promisor = new Deferred();
\Amp\all($lengths)->when(function ($error, $result) use($promisor) {
if ($error) {
$promisor->fail($error);
} else {
$promisor->succeed(array_sum($result));
}
});
return $promisor->promise();
}