then(function ($value) use ($key, &$result, $channel) { $result[$key] = $value; $channel->push(true); return $value; }, function ($err) use ($channel, &$error) { $channel->push(true); if ($error === null) { $error = $err; } }); $key++; } while ($ticks--) { $channel->pop(); } $channel->close(); if ($error !== null) { $reject($error); return; } $resolve($result); }); } }