private function checkoutNewSocket($uri, $options)
{
$needsRebind = $this->needsRebind;
$this->needsRebind = null;
$promisor = new Deferred();
if ($this->allowsNewConnection($uri, $options) || $needsRebind) {
$this->initializeNewConnection($promisor, $uri, $options);
} else {
$this->queuedSocketRequests[$uri][] = [$promisor, $uri, $options];
}
return $promisor->promise();
}