future.go
func (u *userSnapshotFuture) Open() (*SnapshotMeta, io.ReadCloser, error) {
	if u.opener == nil {
		return nil, nil, fmt.Errorf("no snapshot available")
	} else {
		// Invalidate the opener so it can't get called multiple times,
		// which isn't generally safe.
		defer func() {
			u.opener = nil
		}()
		return u.opener()
	}
}
func (u *userSnapshotFuture) Open() (*SnapshotMeta, io.ReadCloser, error) {
	if u.opener == nil {
		return nil, nil, fmt.Errorf("no snapshot available")
	} else {
		// Invalidate the opener so it can't get called multiple times,
		// which isn't generally safe.
		defer func() {
			u.opener = nil
		}()
		return u.opener()
	}
}
// Open is a function you can call to access the underlying snapshot and its
// metadata.