There is no such functionality of ipcMain *. However, you can achieve almost the same result asynchronously with the following steps:
- Place your code which you would run only after the synchronous call in an 
ipcMain callback. 
- Reply to ipc message in renderer process with the result using 
event.sender.send 
A dummy example of sum using this approach looks like the following:
main.js
const {app, BrowserWindow, ipcMain} = require('electron')
const path = require('path')
app.once('ready', () => {
  let win = new BrowserWindow()
  // have to run "sync", that is only after result is ready
  const doJobWithResult = (res) => {
    console.log(res)
  }
  win.webContents.once('dom-ready', () => {
    win.webContents
    .send('sum-request', 23, 98, 3, 61)
    ipcMain.once('sum-reply', (event, sum) => {
      doJobWithResult(sum)
    })
  })
  win.loadURL(path.resolve(__dirname, 'test.html'))
})
renderer.js (referred from test.html)
const {ipcRenderer} = require('electron')
window.onload = () => {
  const add = (a, b) => {
    return a + b
  }
  ipcRenderer.on('sum-request', (event, ...args) => {
    event.sender.send('sum-reply', [...args].reduce(add, 0))
  })
}
* I suppose it's because calling synchronously from main to renderer would block the main nodejs process which does serve renderer processes too after all.