diff --git a/src/channel.c b/src/channel.c
index 0bab47a..13fb653 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -341,6 +341,12 @@
     return channel;
 }
 
+    int
+has_any_channel(void)
+{
+    return first_channel != NULL;
+}
+
 /*
  * Called when the refcount of a channel is zero.
  * Return TRUE if "channel" has a callback and the associated job wasn't
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index eef5595..09b9019 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -9065,8 +9065,17 @@
 		wait_now = due_time;
 	}
 #endif
+#ifdef FEAT_JOB_CHANNEL
+	if (has_any_channel() && wait_now > 100L)
+	    wait_now = 100L;
+#endif
 	ui_delay(wait_now, TRUE);
-	ui_breakcheck();
+#ifdef FEAT_JOB_CHANNEL
+	if (has_any_channel())
+	    ui_breakcheck_force(TRUE);
+	else
+#endif
+	    ui_breakcheck();
 #ifdef MESSAGE_QUEUE
 	/* Process the netbeans and clientserver messages that may have been
 	 * received in the call to ui_breakcheck() when the GUI is in use. This
diff --git a/src/os_amiga.c b/src/os_amiga.c
index 4478093..9266380 100644
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -1381,7 +1381,7 @@
  * trouble with lattice-c programs.
  */
     void
-mch_breakcheck(void)
+mch_breakcheck(int force)
 {
    if (SetSignal(0L, (long)(SIGBREAKF_CTRL_C|SIGBREAKF_CTRL_D|SIGBREAKF_CTRL_E|SIGBREAKF_CTRL_F)) & SIGBREAKF_CTRL_C)
 	got_int = TRUE;
diff --git a/src/os_unix.c b/src/os_unix.c
index 5f1c487..107a474 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5364,9 +5364,10 @@
  * In cooked mode we should get SIGINT, no need to check.
  */
     void
-mch_breakcheck(void)
+mch_breakcheck(int force)
 {
-    if (curr_tmode == TMODE_RAW && RealWaitForChar(read_cmd_fd, 0L, NULL, NULL))
+    if ((curr_tmode == TMODE_RAW || force)
+			       && RealWaitForChar(read_cmd_fd, 0L, NULL, NULL))
 	fill_input_buf(FALSE);
 }
 
diff --git a/src/os_win32.c b/src/os_win32.c
index 0607bd2..5eacce6 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -6187,10 +6187,10 @@
 
 
 /*
- * check for an "interrupt signal": CTRL-break or CTRL-C
+ * Check for an "interrupt signal": CTRL-break or CTRL-C.
  */
     void
-mch_breakcheck(void)
+mch_breakcheck(int force)
 {
 #ifndef FEAT_GUI_W32	    /* never used */
     if (g_fCtrlCPressed || g_fCBrkPressed)
diff --git a/src/proto/channel.pro b/src/proto/channel.pro
index e056d5f..53c5dab 100644
--- a/src/proto/channel.pro
+++ b/src/proto/channel.pro
@@ -4,6 +4,7 @@
 void ch_log(channel_T *ch, char *msg);
 void ch_logs(channel_T *ch, char *msg, char *name);
 channel_T *add_channel(void);
+int has_any_channel(void);
 int channel_unref(channel_T *channel);
 int free_unused_channels_contents(int copyID, int mask);
 void free_unused_channels(int copyID, int mask);
diff --git a/src/proto/os_amiga.pro b/src/proto/os_amiga.pro
index b1d0134..b781680 100644
--- a/src/proto/os_amiga.pro
+++ b/src/proto/os_amiga.pro
@@ -36,7 +36,7 @@
 void mch_set_shellsize(void);
 void mch_new_shellsize(void);
 int mch_call_shell(char_u *cmd, int options);
-void mch_breakcheck(void);
+void mch_breakcheck(int force);
 long Chk_Abort(void);
 int mch_expandpath(garray_T *gap, char_u *pat, int flags);
 int mch_has_exp_wildcard(char_u *p);
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 1d025e8..b1e9b8e 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -61,7 +61,7 @@
 char *mch_job_status(job_T *job);
 int mch_stop_job(job_T *job, char_u *how);
 void mch_clear_job(job_T *job);
-void mch_breakcheck(void);
+void mch_breakcheck(int force);
 int mch_expandpath(garray_T *gap, char_u *path, int flags);
 int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, int flags);
 int mch_has_exp_wildcard(char_u *p);
diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro
index 19c59ec..4e6af5b 100644
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -48,7 +48,7 @@
 void mch_write(char_u *s, int len);
 void mch_delay(long msec, int ignoreinput);
 int mch_remove(char_u *name);
-void mch_breakcheck(void);
+void mch_breakcheck(int force);
 long_u mch_total_mem(int special);
 int mch_wrename(WCHAR *wold, WCHAR *wnew);
 int mch_rename(const char *pszOldFile, const char *pszNewFile);
diff --git a/src/proto/ui.pro b/src/proto/ui.pro
index 072e0c4..dbb7213 100644
--- a/src/proto/ui.pro
+++ b/src/proto/ui.pro
@@ -10,6 +10,7 @@
 void ui_set_shellsize(int mustset);
 void ui_new_shellsize(void);
 void ui_breakcheck(void);
+void ui_breakcheck_force(int force);
 void clip_init(int can_use);
 void clip_update_selection(VimClipboard *clip);
 void clip_own_selection(VimClipboard *cbd);
diff --git a/src/ui.c b/src/ui.c
index f6c039b..ad29190 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -353,12 +353,22 @@
     void
 ui_breakcheck(void)
 {
+    ui_breakcheck_force(FALSE);
+}
+
+/*
+ * When "force" is true also check when the terminal is not in raw mode.
+ * This is useful to read input on channels.
+ */
+    void
+ui_breakcheck_force(int force)
+{
 #ifdef FEAT_GUI
     if (gui.in_use)
 	gui_mch_update();
     else
 #endif
-	mch_breakcheck();
+	mch_breakcheck(force);
 }
 
 /*****************************************************************************
diff --git a/src/version.c b/src/version.c
index 12c5505..eb1c4ab 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    18,
+/**/
     17,
 /**/
     16,
