Skip to content

Instantly share code, notes, and snippets.

@jdoliner
Last active August 29, 2015 00:52
Show Gist options
  • Save jdoliner/6000dc07eb3a0842921d to your computer and use it in GitHub Desktop.
Save jdoliner/6000dc07eb3a0842921d to your computer and use it in GitHub Desktop.
func Mount() {
mounter := ...
errChan := make(chan error)
go func() {
if err := mounter.Mount(); err != nil {
errChan <- err
}
}()
readyChan := make(chan bool)
go func() {
mounter.Ready()
close(readyChan)
}()
select {
case err := <-errChan:
return err
case <-readyChan:
return nil
}
}
@bufdev
Copy link

bufdev commented Aug 29, 2015

func Mount() (<-chan error, error) {
  mounter := ...
  errChan := make(chan error)
  readyChan := make(chan bool)
  go func() {
    if err := mounter.Mount(readyChan); err != nil {
      errChan <- err
    }
  }()
  select {
  case err := <-errChan:
    return nil, err
  case <-readyChan:
    return errChan, nil
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment