RxJs take(1) vs. first()

When using first() you run into an error if no values are emitted and the observable completes:

expectObservable(EMPTY.pipe(
    first())
).toBe('#', undefined, new EmptyError());

The take(1) operator just completes without error:

expectObservable(EMPTY.pipe(
    take(1)
)).toBe('|');