protected function readStreamTask(Context $context, string $path): \Generator
    {
        if (!yield $this->pool->submit($context, new MethodCall(static::class, 'checkFileReadableJob', $path))) {
            throw new FilesystemException(\sprintf('File is not readable: "%s"', $path));
        }
        
        if (!$this->fileTransferSupported) {
            return new ReadableFileStream($this->pool, $path);
        }
        
        $file = yield $this->pool->submit($context, new MethodCall(FileDescriptor::class, 'open', $path, 'rb'));
        
        return new ReadableDescriptorStream($this->pool, $path, $file);
    }