|
@@ -22,17 +22,20 @@ func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-c
|
|
|
messages := make(chan events.Message)
|
|
|
errs := make(chan error, 1)
|
|
|
|
|
|
+ started := make(chan struct{})
|
|
|
go func() {
|
|
|
defer close(errs)
|
|
|
|
|
|
query, err := buildEventsQueryParams(cli.version, options)
|
|
|
if err != nil {
|
|
|
+ close(started)
|
|
|
errs <- err
|
|
|
return
|
|
|
}
|
|
|
|
|
|
resp, err := cli.get(ctx, "/events", query, nil)
|
|
|
if err != nil {
|
|
|
+ close(started)
|
|
|
errs <- err
|
|
|
return
|
|
|
}
|
|
@@ -40,6 +43,7 @@ func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-c
|
|
|
|
|
|
decoder := json.NewDecoder(resp.body)
|
|
|
|
|
|
+ close(started)
|
|
|
for {
|
|
|
select {
|
|
|
case <-ctx.Done():
|
|
@@ -61,6 +65,7 @@ func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-c
|
|
|
}
|
|
|
}
|
|
|
}()
|
|
|
+ <-started
|
|
|
|
|
|
return messages, errs
|
|
|
}
|