protected function handleFile(File $file, Response $response)
 {
     if (isset($this->filesContents[$file->getPath()])) {
         return $this->filesContents[$file->getPath()];
     }
     $file->getContents()->then(function ($contents) use($file) {
         $this->filesContents[$file->getPath()] = $contents;
         return $file->close()->then(function () use($contents) {
             return $contents;
         });
     })->then(function ($fileContents) use($response) {
         $response->writeHead(200);
         $response->end($fileContents);
     });
 }
 public function testCreateNameNParentFromFilename()
 {
     $node = new File('/foo/bar/baz/rabbit/kitten/index.php', Filesystem::createFromAdapter($this->getMock('React\\Filesystem\\Eio\\Adapter', [], [$this->getMock('React\\EventLoop\\StreamSelectLoop')])));
     foreach ([['index.php', '/foo/bar/baz/rabbit/kitten/index.php'], ['kitten', '/foo/bar/baz/rabbit/kitten/'], ['rabbit', '/foo/bar/baz/rabbit/'], ['baz', '/foo/bar/baz/'], ['bar', '/foo/bar/'], ['foo', '/foo/'], ['', '/']] as $names) {
         $this->assertSame($names[0], $node->getName());
         $this->assertSame($names[1], $node->getPath());
         $node = $node->getParent();
     }
 }