I'm sure the answer to this question exists somewhere, but unsure how to phrase the question and don't find what I'm looking for when I try to research callbacks.

Ok, so I've just started dabbling with Gulp for compiling my CSS, and I think it's great!.. despite being useless with JavaScript.

My code is below, but I don't understand how these callbacks are working. How can callbacks be set as a parameter and then be called from inside the function? I don't get it.. is the function basically expecting something to be in there? What value is being set or what's expected to run? I can't seem to make sense of it.

I see this quite frequently in JavaScript, but unsure how it works. I've looked up videos and tutorials of functions and callbacks, they makes sense, but I never seem to be able to find anywhere where this concept is explained which makes me believe I'm not looking for the right thing.

I see the same sort of thing with Promises as well where 'resolve' or 'reject' parameters are set, but unsure what's going on when a condition is met, or what values are set and where.. hope this makes sense and appreciate any help in understanding this better.

```js
const gulp = require('gulp');
const sass = require('gulp-sass');
const browserSync = require('browser-sync');

// TASKS
// Compile SASS
gulp.task('sass-compile', (callback) => {
    gulp.src('scss/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('css'))
    .pipe(browserSync.stream());
    console.log('******************** SCSS > CSS successful ********************');
    callback();
});

// Live reload
gulp.task('browser-sync', (callback) => {  
    browserSync.init({
        proxy: 'http://localhost/test1',
        port: 80
    });
    callback();
});

// WATCHER
gulp.task('default', gulp.series('browser-sync', (callback) => {
    gulp.watch('scss/*.scss', gulp.series('sass-compile'));
    callback();
}));
```