public function fetchExcuse($event, $queue)
    {
        $url = 'http://pages.cs.wisc.edu/~ballard/bofh/bofhserver.pl';

        $request = new Request([
            'url' => $url,
            'resolveCallback' =>
                function (Response $response) use ($url, $event, $queue) {
                    $code = $response->getStatusCode();
                    $dom = new \DOMDocument();
                    $dom->loadHTML($response->getBody());
                    $xpath = new \DOMXpath($dom);
                    // XPath to the excuse text
                    $result = $xpath->query('/html/body/center/font[2]');

                    if ($result->length > 0) {
                        $queue->ircPrivmsg($event->getSource(), $result->item(0)->nodeValue);
                    }

                    if ($code !== 200) {
                        $this->getLogger()->notice('[BOFH] Site responded with error', [
                            'code' => $code,
                            'message' => $data['error']['message'],
                        ]);
                        $queue->ircPrivmsg($event->getSource(), 'Sorry, no excuse was found');
                        return;
                    }
                    $this->getLogger()->info('[BOFH] Site successful return');
                },
            'rejectCallback' =>
                function ($data, $headers, $code) use ($event, $queue) {
                    $this->getLogger()->notice('[BOFH] Site failed to respond');
                    $queue->ircPrivmsg($event->getSource(), 'Sorry, there was a problem communicating with the site');
                },
        ]);
        $this->getEventEmitter()->emit('http.request', [$request]);
    }